aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java2
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java12
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java2
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java28
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java71
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/Constants.java5
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/MenuUtil.java76
-rw-r--r--app/src/main/res/menu/nowplaying_context.xml8
-rw-r--r--app/src/main/res/menu/nowplaying_context_offline.xml8
-rw-r--r--app/src/main/res/menu/select_album_context.xml40
-rw-r--r--app/src/main/res/menu/select_album_context_offline.xml34
-rw-r--r--app/src/main/res/menu/select_artist_context.xml39
-rw-r--r--app/src/main/res/menu/select_artist_context_offline.xml31
-rw-r--r--app/src/main/res/menu/select_bookmark_context.xml18
-rw-r--r--app/src/main/res/menu/select_playlist_context.xml27
-rw-r--r--app/src/main/res/menu/select_playlist_context_offline.xml15
-rw-r--r--app/src/main/res/menu/select_podcast_episode_context.xml14
-rw-r--r--app/src/main/res/menu/select_song.xml16
-rw-r--r--app/src/main/res/menu/select_song_context.xml18
-rw-r--r--app/src/main/res/menu/select_song_context_offline.xml14
-rw-r--r--app/src/main/res/menu/select_song_offline.xml16
-rw-r--r--app/src/main/res/menu/select_video_context.xml17
-rw-r--r--app/src/main/res/menu/select_video_context_offline.xml10
-rw-r--r--app/src/main/res/values/strings.xml9
-rw-r--r--app/src/main/res/xml/settings.xml33
25 files changed, 461 insertions, 102 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
index 38bd483d..75b1562f 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
@@ -401,7 +401,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
currentActionMode = mode;
onCreateActionModeMenu(menu, mode.getMenuInflater());
- MenuUtil.hideMenuItems(context, menu);
+ MenuUtil.hideMenuItems(context, menu, updateView);
T item = holder.getItem();
selected.add(item);
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
index 68ade3cc..f312675f 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
@@ -555,15 +555,20 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
menu.findItem(R.id.menu_show_artist).setVisible(false);
}
- MenuUtil.hideMenuItems(context, menu);
+ MenuUtil.hideMenuItems(context, menu, updateView);
}
@Override
public boolean onContextItemSelected(MenuItem menuItem, UpdateView<DownloadFile> updateView, DownloadFile downloadFile) {
+ if(onContextItemSelected(menuItem, downloadFile)) {
+ return true;
+ }
+
return menuItemSelected(menuItem.getItemId(), downloadFile);
}
private boolean menuItemSelected(int menuItemId, final DownloadFile song) {
+ List<Entry> songs;
switch (menuItemId) {
case R.id.menu_show_album: case R.id.menu_show_artist:
Entry entry = song.getSong();
@@ -629,11 +634,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
replaceFragment(fragment);
return true;
}
- case R.id.menu_delete:
- List<Entry> songs = new ArrayList<Entry>(1);
- songs.add(song.getSong());
- getDownloadService().delete(songs);
- return true;
case R.id.menu_remove_all:
Util.confirmDialog(context, R.string.download_menu_remove_all, "", new DialogInterface.OnClickListener() {
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
index d992319b..ceca2bff 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
@@ -48,7 +48,7 @@ public class SelectBookmarkFragment extends SelectRecyclerFragment<MusicDirector
@Override
public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView<MusicDirectory.Entry> updateView, MusicDirectory.Entry item) {
menuInflater.inflate(R.menu.select_bookmark_context, menu);
- MenuUtil.hideMenuItems(context, menu);
+ MenuUtil.hideMenuItems(context, menu, updateView);
}
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
index 543dcb26..ab22c808 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
@@ -76,13 +76,41 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment<Playlist> {
@Override
public boolean onContextItemSelected(MenuItem menuItem, UpdateView<Playlist> updateView, Playlist playlist) {
+ SubsonicFragment fragment;
+ Bundle args;
+ FragmentTransaction trans;
+
switch (menuItem.getItemId()) {
+ case R.id.playlist_menu_download:
+ downloadPlaylist(playlist.getId(), playlist.getName(), false, true, false, false, true);
+ break;
case R.id.playlist_menu_sync:
syncPlaylist(playlist);
break;
case R.id.playlist_menu_stop_sync:
stopSyncPlaylist(playlist);
break;
+ case R.id.playlist_menu_play_now:
+ fragment = new SelectDirectoryFragment();
+ args = new Bundle();
+ args.putString(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID, playlist.getId());
+ args.putString(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME, playlist.getName());
+ args.putBoolean(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true);
+ fragment.setArguments(args);
+
+ replaceFragment(fragment);
+ break;
+ case R.id.playlist_menu_play_shuffled:
+ fragment = new SelectDirectoryFragment();
+ args = new Bundle();
+ args.putString(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID, playlist.getId());
+ args.putString(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME, playlist.getName());
+ args.putBoolean(Constants.INTENT_EXTRA_NAME_SHUFFLE, true);
+ args.putBoolean(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true);
+ fragment.setArguments(args);
+
+ replaceFragment(fragment);
+ break;
case R.id.playlist_menu_delete:
deletePlaylist(playlist);
break;
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java
index 0a822483..f01ee44b 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java
@@ -279,7 +279,7 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
}
}
- MenuUtil.hideMenuItems(context, menu);
+ MenuUtil.hideMenuItems(context, menu, updateView);
}
protected void recreateContextMenu(Menu menu) {
@@ -311,19 +311,33 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
case R.id.artist_menu_play_shuffled:
downloadRecursively(artist.getId(), false, false, true, true, false);
break;
+ case R.id.artist_menu_play_next:
+ downloadRecursively(artist.getId(), false, true, false, false, false, true);
+ break;
case R.id.artist_menu_play_last:
downloadRecursively(artist.getId(), false, true, false, false, false);
break;
case R.id.artist_menu_download:
downloadRecursively(artist.getId(), false, true, false, false, true);
break;
- case R.id.artist_menu_star:
- toggleStarred(artist);
+ case R.id.artist_menu_pin:
+ downloadRecursively(artist.getId(), true, true, false, false, true);
+ break;
+ case R.id.artist_menu_delete:
+ deleteRecursively(artist);
break;
case R.id.album_menu_play_now:
artistOverride = true;
downloadRecursively(entry.getId(), false, false, true, false, false);
break;
+ case R.id.album_menu_play_shuffled:
+ artistOverride = true;
+ downloadRecursively(entry.getId(), false, false, true, true, false);
+ break;
+ case R.id.album_menu_play_next:
+ artistOverride = true;
+ downloadRecursively(entry.getId(), false, true, false, false, false, true);
+ break;
case R.id.album_menu_play_last:
artistOverride = true;
downloadRecursively(entry.getId(), false, true, false, false, false);
@@ -332,9 +346,16 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
artistOverride = true;
downloadRecursively(entry.getId(), false, true, false, false, true);
break;
+ case R.id.album_menu_pin:
+ artistOverride = true;
+ downloadRecursively(entry.getId(), true, true, false, false, true);
+ break;
case R.id.album_menu_star:
toggleStarred(entry);
break;
+ case R.id.album_menu_delete:
+ deleteRecursively(entry);
+ break;
case R.id.album_menu_info:
displaySongInfo(entry);
break;
@@ -353,8 +374,11 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
case R.id.song_menu_download:
getDownloadService().downloadBackground(songs, false);
break;
+ case R.id.song_menu_pin:
+ getDownloadService().downloadBackground(songs, true);
+ break;
case R.id.song_menu_delete:
- getDownloadService().delete(songs);
+ deleteSongs(songs);
break;
case R.id.song_menu_add_playlist:
addToPlaylist(songs);
@@ -1419,15 +1443,14 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
}
public void deleteRecursively(Artist artist) {
- deleteRecursively(FileUtil.getArtistDirectory(context, artist));
+ deleteRecursively(artist, FileUtil.getArtistDirectory(context, artist));
}
public void deleteRecursively(Entry album) {
- deleteRecursively(FileUtil.getAlbumDirectory(context, album));
-
+ deleteRecursively(album, FileUtil.getAlbumDirectory(context, album));
}
- public void deleteRecursively(final File dir) {
+ public void deleteRecursively(final Object remove, final File dir) {
if(dir == null) {
return;
}
@@ -1443,7 +1466,37 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR
@Override
protected void done(Void result) {
if(Util.isOffline(context)) {
- refresh();
+ SectionAdapter adapter = getCurrentAdapter();
+ if(adapter != null) {
+ adapter.removeItem(remove);
+ } else {
+ refresh();
+ }
+ } else {
+ UpdateView.triggerUpdate();
+ }
+ }
+ }.execute();
+ }
+ public void deleteSongs(final List<Entry> songs) {
+ new LoadingTask<Void>(context) {
+ @Override
+ protected Void doInBackground() throws Throwable {
+ getDownloadService().delete(songs);
+ return null;
+ }
+
+ @Override
+ protected void done(Void result) {
+ if(Util.isOffline(context)) {
+ SectionAdapter adapter = getCurrentAdapter();
+ if(adapter != null) {
+ for(Entry song: songs) {
+ adapter.removeItem(song);
+ }
+ } else {
+ refresh();
+ }
} else {
UpdateView.triggerUpdate();
}
diff --git a/app/src/main/java/github/daneren2005/dsub/util/Constants.java b/app/src/main/java/github/daneren2005/dsub/util/Constants.java
index cc02b709..22463d9d 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/Constants.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/Constants.java
@@ -133,8 +133,13 @@ public final class Constants {
public static final String PREFERENCES_KEY_PODCASTS_ENABLED = "podcastsEnabled";
public static final String PREFERENCES_KEY_BOOKMARKS_ENABLED = "bookmarksEnabled";
public static final String PREFERENCES_KEY_CUSTOM_SORT_ENABLED = "customSortEnabled";
+ public static final String PREFERENCES_KEY_MENU_PLAY_NOW = "showPlayNow";
+ public static final String PREFERENCES_KEY_MENU_PLAY_SHUFFLED = "showPlayShuffled";
public static final String PREFERENCES_KEY_MENU_PLAY_NEXT = "showPlayNext";
public static final String PREFERENCES_KEY_MENU_PLAY_LAST = "showPlayLast";
+ public static final String PREFERENCES_KEY_MENU_DOWNLOAD = "showDownload";
+ public static final String PREFERENCES_KEY_MENU_PIN = "showPin";
+ public static final String PREFERENCES_KEY_MENU_DELETE = "showDelete";
public static final String PREFERENCES_KEY_MENU_STAR = "showStar";
public static final String PREFERENCES_KEY_MENU_SHARED = "showShared";
public static final String PREFERENCES_KEY_SHARED_ENABLED = "sharedEnabled";
diff --git a/app/src/main/java/github/daneren2005/dsub/util/MenuUtil.java b/app/src/main/java/github/daneren2005/dsub/util/MenuUtil.java
index cd899bb4..1b613b9d 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/MenuUtil.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/MenuUtil.java
@@ -17,13 +17,24 @@ package github.daneren2005.dsub.util;
import android.content.Context;
import android.content.SharedPreferences;
+import android.util.Log;
import android.view.Menu;
+import java.io.File;
+
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.domain.ServerInfo;
+import github.daneren2005.dsub.service.DownloadFile;
+import github.daneren2005.dsub.view.AlbumView;
+import github.daneren2005.dsub.view.ArtistEntryView;
+import github.daneren2005.dsub.view.ArtistView;
+import github.daneren2005.dsub.view.SongView;
+import github.daneren2005.dsub.view.UpdateView;
public final class MenuUtil {
- public static void hideMenuItems(Context context, Menu menu) {
+ private final static String TAG = MenuUtil.class.getSimpleName();
+
+ public static void hideMenuItems(Context context, Menu menu, UpdateView updateView) {
if(!ServerInfo.checkServerVersion(context, "1.8")) {
menu.setGroupVisible(R.id.server_1_8, false);
menu.setGroupVisible(R.id.hide_star, false);
@@ -36,12 +47,27 @@ public final class MenuUtil {
}
SharedPreferences prefs = Util.getPreferences(context);
- if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PLAY_NEXT, true)) {
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PLAY_NOW, true)) {
+ menu.setGroupVisible(R.id.hide_play_now, false);
+ }
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PLAY_SHUFFLED, true)) {
+ menu.setGroupVisible(R.id.hide_play_shuffled, false);
+ }
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PLAY_NEXT, false)) {
menu.setGroupVisible(R.id.hide_play_next, false);
}
if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PLAY_LAST, true)) {
menu.setGroupVisible(R.id.hide_play_last, false);
}
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_DOWNLOAD, false)) {
+ menu.setGroupVisible(R.id.hide_download, false);
+ }
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_PIN, false)) {
+ menu.setGroupVisible(R.id.hide_pin, false);
+ }
+ if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_DELETE, false)) {
+ menu.setGroupVisible(R.id.hide_delete, false);
+ }
if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_STAR, true)) {
menu.setGroupVisible(R.id.hide_star, false);
}
@@ -51,5 +77,51 @@ public final class MenuUtil {
if(!prefs.getBoolean(Constants.PREFERENCES_KEY_MENU_RATING, true)) {
menu.setGroupVisible(R.id.hide_rating, false);
}
+
+ if(!Util.isOffline(context)) {
+ // If we are looking at a standard song view, get downloadFile to cache what options to show
+ if(updateView instanceof SongView) {
+ SongView songView = (SongView) updateView;
+ DownloadFile downloadFile = songView.getDownloadFile();
+
+ try {
+ if(downloadFile != null) {
+ if(downloadFile.isWorkDone()) {
+ // Remove permanent cache menu if already perma cached
+ if(downloadFile.isSaved()) {
+ menu.setGroupVisible(R.id.hide_pin, false);
+ }
+
+ // Remove cache option no matter what if already downloaded
+ menu.setGroupVisible(R.id.hide_download, false);
+ } else {
+ // Remove delete option if nothing to delete
+ menu.setGroupVisible(R.id.hide_delete, false);
+ }
+ }
+ } catch(Exception e) {
+ Log.w(TAG, "Failed to lookup downloadFile info", e);
+ }
+ }
+ // Apply similar logic to album views
+ else if(updateView instanceof AlbumView || updateView instanceof ArtistView || updateView instanceof ArtistEntryView) {
+ File folder = null;
+ if(updateView instanceof AlbumView) {
+ folder = ((AlbumView) updateView).getFile();
+ } else if(updateView instanceof ArtistView) {
+ folder = ((ArtistView) updateView).getFile();
+ } else if(updateView instanceof ArtistEntryView) {
+ folder = ((ArtistEntryView) updateView).getFile();
+ }
+
+ try {
+ if(folder != null && !folder.exists()) {
+ menu.setGroupVisible(R.id.hide_delete, false);
+ }
+ } catch(Exception e) {
+ Log.w(TAG, "Failed to lookup album directory info", e);
+ }
+ }
+ }
}
}
diff --git a/app/src/main/res/menu/nowplaying_context.xml b/app/src/main/res/menu/nowplaying_context.xml
index 845a98c8..60d6288e 100644
--- a/app/src/main/res/menu/nowplaying_context.xml
+++ b/app/src/main/res/menu/nowplaying_context.xml
@@ -18,9 +18,11 @@
android:id="@+id/menu_lyrics"
android:title="@string/download.menu_lyrics"/>
- <item
- android:id="@+id/menu_delete"
- android:title="@string/menu.delete_cache"/>
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
<group android:id="@+id/hide_star">
<item
diff --git a/app/src/main/res/menu/nowplaying_context_offline.xml b/app/src/main/res/menu/nowplaying_context_offline.xml
index 9ce63d79..5f8009ff 100644
--- a/app/src/main/res/menu/nowplaying_context_offline.xml
+++ b/app/src/main/res/menu/nowplaying_context_offline.xml
@@ -14,9 +14,11 @@
android:id="@+id/menu_show_album"
android:title="@string/download.menu_show_album"/>
- <item
- android:id="@+id/menu_delete"
- android:title="@string/menu.delete_cache"/>
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
<group android:id="@+id/hide_star">
<item
diff --git a/app/src/main/res/menu/select_album_context.xml b/app/src/main/res/menu/select_album_context.xml
index b06f2d24..e4a901ac 100644
--- a/app/src/main/res/menu/select_album_context.xml
+++ b/app/src/main/res/menu/select_album_context.xml
@@ -5,9 +5,23 @@
android:id="@+id/album_menu_info"
android:title="@string/common.info"/>
- <item
- android:id="@+id/album_menu_play_now"
- android:title="@string/common.play_now"/>
+ <group android:id="@+id/hide_play_now">
+ <item
+ android:id="@+id/album_menu_play_now"
+ android:title="@string/common.play_now"/>
+ </group>
+
+ <group android:id="@+id/hide_play_shuffled">
+ <item
+ android:id="@+id/album_menu_play_shuffled"
+ android:title="@string/common.play_shuffled"/>
+ </group>
+
+ <group android:id="@+id/hide_play_next">
+ <item
+ android:id="@+id/album_menu_play_next"
+ android:title="@string/common.play_next"/>
+ </group>
<group android:id="@+id/hide_play_last">
<item
@@ -15,9 +29,23 @@
android:title="@string/common.play_last"/>
</group>
- <item
- android:id="@+id/album_menu_download"
- android:title="@string/common.download"/>
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/album_menu_download"
+ android:title="@string/common.download"/>
+ </group>
+
+ <group android:id="@+id/hide_pin">
+ <item
+ android:id="@+id/album_menu_pin"
+ android:title="@string/common.pin"/>
+ </group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/album_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
<item
android:id="@+id/album_menu_show_artist"
diff --git a/app/src/main/res/menu/select_album_context_offline.xml b/app/src/main/res/menu/select_album_context_offline.xml
index d65ff725..c10f2c62 100644
--- a/app/src/main/res/menu/select_album_context_offline.xml
+++ b/app/src/main/res/menu/select_album_context_offline.xml
@@ -5,17 +5,39 @@
android:id="@+id/album_menu_info"
android:title="@string/common.info"/>
- <item
- android:id="@+id/album_menu_star"
- android:title="@string/common.star"/>
+ <group android:id="@+id/hide_play_now">
+ <item
+ android:id="@+id/album_menu_play_now"
+ android:title="@string/common.play_now"/>
+ </group>
- <item
- android:id="@+id/album_menu_play_now"
- android:title="@string/common.play_now"/>
+ <group android:id="@+id/hide_play_shuffled">
+ <item
+ android:id="@+id/album_menu_play_shuffled"
+ android:title="@string/common.play_shuffled"/>
+ </group>
+
+ <group android:id="@+id/hide_play_next">
+ <item
+ android:id="@+id/album_menu_play_next"
+ android:title="@string/common.play_next"/>
+ </group>
<group android:id="@+id/hide_play_last">
<item
android:id="@+id/album_menu_play_last"
android:title="@string/common.play_last"/>
</group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/album_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
+
+ <group android:id="@+id/hide_star">
+ <item
+ android:id="@+id/album_menu_star"
+ android:title="@string/common.star"/>
+ </group>
</menu>
diff --git a/app/src/main/res/menu/select_artist_context.xml b/app/src/main/res/menu/select_artist_context.xml
index 8e87d932..589f044c 100644
--- a/app/src/main/res/menu/select_artist_context.xml
+++ b/app/src/main/res/menu/select_artist_context.xml
@@ -1,25 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <group android:id="@+id/server_1_10">
+ <group android:id="@+id/hide_play_now">
<item
android:id="@+id/artist_menu_play_now"
android:title="@string/common.play_now"/>
+ </group>
+ <group android:id="@+id/hide_play_shuffled">
<item
android:id="@+id/artist_menu_play_shuffled"
android:title="@string/common.play_shuffled"/>
+ </group>
- <group android:id="@+id/hide_play_last">
- <item
- android:id="@+id/artist_menu_play_last"
- android:title="@string/common.play_last"/>
- </group>
+ <group android:id="@+id/hide_play_next">
+ <item
+ android:id="@+id/artist_menu_play_next"
+ android:title="@string/common.play_next"/>
+ </group>
+
+ <group android:id="@+id/hide_play_last">
+ <item
+ android:id="@+id/artist_menu_play_last"
+ android:title="@string/common.play_last"/>
+ </group>
+ <group android:id="@+id/hide_download">
<item
android:id="@+id/artist_menu_download"
- android:title="@string/common.download"
- />
+ android:title="@string/common.download"/>
+ </group>
+
+ <group android:id="@+id/hide_pin">
+ <item
+ android:id="@+id/artist_menu_pin"
+ android:title="@string/common.pin"/>
+ </group>
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/artist_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
+
+ <group android:id="@+id/server_1_10">
<group android:id="@+id/hide_star">
<item
android:id="@+id/artist_menu_star"
diff --git a/app/src/main/res/menu/select_artist_context_offline.xml b/app/src/main/res/menu/select_artist_context_offline.xml
index 0fb9aad7..a14d6dc8 100644
--- a/app/src/main/res/menu/select_artist_context_offline.xml
+++ b/app/src/main/res/menu/select_artist_context_offline.xml
@@ -1,21 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/artist_menu_play_now"
- android:title="@string/common.play_now"/>
+ <group android:id="@+id/hide_play_now">
+ <item
+ android:id="@+id/artist_menu_play_now"
+ android:title="@string/common.play_now"/>
+ </group>
- <item
- android:id="@+id/artist_menu_play_shuffled"
- android:title="@string/common.play_shuffled"/>
+ <group android:id="@+id/hide_play_shuffled">
+ <item
+ android:id="@+id/artist_menu_play_shuffled"
+ android:title="@string/common.play_shuffled"/>
+ </group>
- <item
- android:id="@+id/artist_menu_download"
- android:title="@string/common.download"
- />
+ <group android:id="@+id/hide_play_next">
+ <item
+ android:id="@+id/artist_menu_play_next"
+ android:title="@string/common.play_next"/>
+ </group>
<group android:id="@+id/hide_play_last">
<item
android:id="@+id/artist_menu_play_last"
android:title="@string/common.play_last"/>
</group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/artist_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
</menu> \ No newline at end of file
diff --git a/app/src/main/res/menu/select_bookmark_context.xml b/app/src/main/res/menu/select_bookmark_context.xml
index 20808cf5..468bc2fb 100644
--- a/app/src/main/res/menu/select_bookmark_context.xml
+++ b/app/src/main/res/menu/select_bookmark_context.xml
@@ -25,6 +25,24 @@
<item
android:id="@+id/song_menu_show_artist"
android:title="@string/menu.show_artist"/>
+
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/song_menu_download"
+ android:title="@string/common.download"/>
+ </group>
+
+ <group android:id="@+id/hide_pin">
+ <item
+ android:id="@+id/song_menu_pin"
+ android:title="@string/common.pin"/>
+ </group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
<item
android:id="@+id/bookmark_menu_delete"
diff --git a/app/src/main/res/menu/select_playlist_context.xml b/app/src/main/res/menu/select_playlist_context.xml
index 4941e94b..ff3618a9 100644
--- a/app/src/main/res/menu/select_playlist_context.xml
+++ b/app/src/main/res/menu/select_playlist_context.xml
@@ -4,8 +4,25 @@
<item
android:id="@+id/playlist_info"
- android:title="@string/common.info"
- />
+ android:title="@string/common.info"/>
+
+ <group android:id="@+id/hide_play_now">
+ <item
+ android:id="@+id/playlist_menu_play_now"
+ android:title="@string/common.play_now"/>
+ </group>
+
+ <group android:id="@+id/hide_play_shuffled">
+ <item
+ android:id="@+id/playlist_menu_play_shuffled"
+ android:title="@string/common.play_shuffled"/>
+ </group>
+
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/playlist_menu_download"
+ android:title="@string/common.download"/>
+ </group>
<item
android:id="@+id/playlist_menu_sync"
@@ -17,12 +34,10 @@
<item
android:id="@+id/playlist_update_info"
- android:title="@string/playlist.update_info"
- />
+ android:title="@string/playlist.update_info"/>
<item
android:id="@+id/playlist_menu_delete"
- android:title="@string/playlist.delete"
- />
+ android:title="@string/playlist.delete"/>
</menu>
diff --git a/app/src/main/res/menu/select_playlist_context_offline.xml b/app/src/main/res/menu/select_playlist_context_offline.xml
index 6745d850..6cbc1e11 100644
--- a/app/src/main/res/menu/select_playlist_context_offline.xml
+++ b/app/src/main/res/menu/select_playlist_context_offline.xml
@@ -2,6 +2,17 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/playlist_info"
- android:title="@string/common.info"
- />
+ android:title="@string/common.info"/>
+
+ <group android:id="@+id/hide_play_now">
+ <item
+ android:id="@+id/playlist_menu_play_now"
+ android:title="@string/common.play_now"/>
+ </group>
+
+ <group android:id="@+id/hide_play_shuffled">
+ <item
+ android:id="@+id/playlist_menu_play_shuffled"
+ android:title="@string/common.play_shuffled"/>
+ </group>
</menu> \ No newline at end of file
diff --git a/app/src/main/res/menu/select_podcast_episode_context.xml b/app/src/main/res/menu/select_podcast_episode_context.xml
index 057ff187..a05e58be 100644
--- a/app/src/main/res/menu/select_podcast_episode_context.xml
+++ b/app/src/main/res/menu/select_podcast_episode_context.xml
@@ -18,12 +18,24 @@
android:title="@string/common.play_last"/>
</group>
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/song_menu_download"
+ android:title="@string/common.download"/>
+ </group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
+
<group android:id="@+id/server_1.9">
<item
android:id="@+id/bookmark_menu_delete"
android:title="@string/bookmark.delete"/>
</group>
-
+
<item
android:id="@+id/song_menu_server_download"
android:title="@string/select_podcasts.server_download"/>
diff --git a/app/src/main/res/menu/select_song.xml b/app/src/main/res/menu/select_song.xml
index 5718866a..5277f881 100644
--- a/app/src/main/res/menu/select_song.xml
+++ b/app/src/main/res/menu/select_song.xml
@@ -33,15 +33,11 @@
android:id="@+id/menu_delete"
android:title="@string/menu.delete_cache"/>
- <group android:id="@+id/hide_play_next">
- <item
- android:id="@+id/menu_play_next"
- android:title="@string/common.play_next"/>
- </group>
+ <item
+ android:id="@+id/menu_play_next"
+ android:title="@string/common.play_next"/>
- <group android:id="@+id/hide_play_last">
- <item
- android:id="@+id/menu_play_last"
- android:title="@string/menu.play_last"/>
- </group>
+ <item
+ android:id="@+id/menu_play_last"
+ android:title="@string/menu.play_last"/>
</menu>
diff --git a/app/src/main/res/menu/select_song_context.xml b/app/src/main/res/menu/select_song_context.xml
index ef5478b6..34ea27a6 100644
--- a/app/src/main/res/menu/select_song_context.xml
+++ b/app/src/main/res/menu/select_song_context.xml
@@ -18,6 +18,24 @@
android:id="@+id/song_menu_play_last"
android:title="@string/common.play_last"/>
</group>
+
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/song_menu_download"
+ android:title="@string/common.download"/>
+ </group>
+
+ <group android:id="@+id/hide_pin">
+ <item
+ android:id="@+id/song_menu_pin"
+ android:title="@string/common.pin"/>
+ </group>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
<group android:id="@+id/server_1.8">
<item
diff --git a/app/src/main/res/menu/select_song_context_offline.xml b/app/src/main/res/menu/select_song_context_offline.xml
index da0f366e..1c52e792 100644
--- a/app/src/main/res/menu/select_song_context_offline.xml
+++ b/app/src/main/res/menu/select_song_context_offline.xml
@@ -18,7 +18,15 @@
android:title="@string/common.play_last"/>
</group>
- <item
- android:id="@+id/song_menu_star"
- android:title="@string/common.star"/>
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
+
+ <group android:id="@+id/hide_star">
+ <item
+ android:id="@+id/song_menu_star"
+ android:title="@string/common.star"/>
+ </group>
</menu>
diff --git a/app/src/main/res/menu/select_song_offline.xml b/app/src/main/res/menu/select_song_offline.xml
index 7a4a5407..383e1be3 100644
--- a/app/src/main/res/menu/select_song_offline.xml
+++ b/app/src/main/res/menu/select_song_offline.xml
@@ -17,15 +17,11 @@
android:id="@+id/menu_delete"
android:title="@string/menu.delete_cache"/>
- <group android:id="@+id/hide_play_next">
- <item
- android:id="@+id/menu_play_next"
- android:title="@string/common.play_next"/>
- </group>
+ <item
+ android:id="@+id/menu_play_next"
+ android:title="@string/common.play_next"/>
- <group android:id="@+id/hide_play_last">
- <item
- android:id="@+id/menu_play_last"
- android:title="@string/menu.play_last"/>
- </group>
+ <item
+ android:id="@+id/menu_play_last"
+ android:title="@string/menu.play_last"/>
</menu>
diff --git a/app/src/main/res/menu/select_video_context.xml b/app/src/main/res/menu/select_video_context.xml
index 3eda2df7..41d2b1a6 100644
--- a/app/src/main/res/menu/select_video_context.xml
+++ b/app/src/main/res/menu/select_video_context.xml
@@ -13,12 +13,15 @@
android:id="@+id/song_menu_play_external"
android:title="@string/common.play_external"/>
- <item
- android:id="@+id/song_menu_download"
- android:title="@string/common.download"
- />
+ <group android:id="@+id/hide_download">
+ <item
+ android:id="@+id/song_menu_download"
+ android:title="@string/common.download"/>
+ </group>
- <item
- android:id="@+id/song_menu_delete"
- android:title="@string/menu.delete_cache"/>
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
</menu>
diff --git a/app/src/main/res/menu/select_video_context_offline.xml b/app/src/main/res/menu/select_video_context_offline.xml
index 3fea9f5e..fdf8f288 100644
--- a/app/src/main/res/menu/select_video_context_offline.xml
+++ b/app/src/main/res/menu/select_video_context_offline.xml
@@ -8,8 +8,10 @@
<item
android:id="@+id/song_menu_play_external"
android:title="@string/common.play_external"/>
-
- <item
- android:id="@+id/song_menu_delete"
- android:title="@string/menu.delete_cache"/>
+
+ <group android:id="@+id/hide_delete">
+ <item
+ android:id="@+id/song_menu_delete"
+ android:title="@string/menu.delete_cache"/>
+ </group>
</menu>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d87dbf69..972fb5d4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -424,8 +424,13 @@
<string name="settings.sync_notification">Show Sync Notification</string>
<string name="settings.sync_notification_summary">Show a notification after new media has been synced</string>
<string name="settings.menu_options.title">Optional Menu Options</string>
- <string name="settings.menu_options.play_next_summary">Show Play next in menus</string>
- <string name="settings.menu_options.play_last_summary">Show Play last in menus</string>
+ <string name="settings.menu_options.play_now_summary">Show Now in menus</string>
+ <string name="settings.menu_options.play_shuffled_summary">Show Shuffled in menus</string>
+ <string name="settings.menu_options.play_next_summary">Show Play Next in menus</string>
+ <string name="settings.menu_options.play_last_summary">Show Play Last in menus</string>
+ <string name="settings.menu_options.download_summary">Show Download in menus</string>
+ <string name="settings.menu_options.pin_summary">Show Permanent Cache in menus</string>
+ <string name="settings.menu_options.delete_summary">Show Delete in menus</string>
<string name="settings.menu_options.star_summary">Show Star in menus</string>
<string name="settings.menu_options.shared_summary">Show Share in menus</string>
<string name="settings.menu_options.rate_summary">Show Rating in menus</string>
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index dec8d928..084811a1 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -99,10 +99,22 @@
android:title="@string/settings.menu_options.title">
<CheckBoxPreference
+ android:title="@string/common.play_now"
+ android:summary="@string/settings.menu_options.play_now_summary"
+ android:key="showPlayNow"
+ android:defaultValue="true"/>
+
+ <CheckBoxPreference
+ android:title="@string/common.play_shuffled"
+ android:summary="@string/settings.menu_options.play_shuffled_summary"
+ android:key="showPlayShuffled"
+ android:defaultValue="true"/>
+
+ <CheckBoxPreference
android:title="@string/common.play_next"
android:summary="@string/settings.menu_options.play_next_summary"
android:key="showPlayNext"
- android:defaultValue="true"/>
+ android:defaultValue="false"/>
<CheckBoxPreference
android:title="@string/common.play_last"
@@ -111,6 +123,24 @@
android:defaultValue="true"/>
<CheckBoxPreference
+ android:title="@string/common.download"
+ android:summary="@string/settings.menu_options.download_summary"
+ android:key="showDownload"
+ android:defaultValue="false"/>
+
+ <CheckBoxPreference
+ android:title="@string/common.pin"
+ android:summary="@string/settings.menu_options.pin_summary"
+ android:key="showPin"
+ android:defaultValue="false"/>
+
+ <CheckBoxPreference
+ android:title="@string/common.delete"
+ android:summary="@string/settings.menu_options.delete_summary"
+ android:key="showDelete"
+ android:defaultValue="false"/>
+
+ <CheckBoxPreference
android:title="@string/common.star"
android:summary="@string/settings.menu_options.star_summary"
android:key="showStar"
@@ -127,7 +157,6 @@
android:summary="@string/settings.menu_options.rate_summary"
android:key="showRating"
android:defaultValue="true"/>
-
</PreferenceCategory>
</PreferenceScreen>