From c90da12d795ad13d538a85a3c7fa11f5d5bc1e1b Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 25 Jun 2015 17:46:37 -0700 Subject: #517 Replace ContextMenu with PopupMenu --- .../daneren2005/dsub/adapter/SectionAdapter.java | 35 +++++++------ .../daneren2005/dsub/fragments/AdminFragment.java | 15 +++--- .../daneren2005/dsub/fragments/MainFragment.java | 10 ++++ .../dsub/fragments/NowPlayingFragment.java | 59 +++++----------------- .../daneren2005/dsub/fragments/SearchFragment.java | 23 ++------- .../dsub/fragments/SelectArtistFragment.java | 21 ++------ .../dsub/fragments/SelectBookmarkFragment.java | 25 +++------ .../dsub/fragments/SelectDirectoryFragment.java | 28 ++-------- .../dsub/fragments/SelectGenreFragment.java | 12 +++++ .../dsub/fragments/SelectPlaylistFragment.java | 27 ++++------ .../dsub/fragments/SelectPodcastsFragment.java | 26 ++++------ .../dsub/fragments/SelectRecyclerFragment.java | 1 - .../dsub/fragments/SelectShareFragment.java | 16 +++--- .../dsub/fragments/SelectVideoFragment.java | 18 ++----- .../dsub/fragments/SelectYearFragment.java | 12 +++++ .../dsub/fragments/SimilarArtistFragment.java | 20 ++------ .../dsub/fragments/SubsonicFragment.java | 52 +++++++++---------- .../daneren2005/dsub/fragments/UserFragment.java | 11 ++++ app/src/main/res/menu/nowplaying_context.xml | 4 -- .../main/res/menu/nowplaying_context_offline.xml | 4 -- app/src/main/res/values-de/strings.xml | 3 +- app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values-fr/strings.xml | 3 +- app/src/main/res/values-hu/strings.xml | 3 +- app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values/strings.xml | 3 +- 26 files changed, 165 insertions(+), 270 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 f57012b5..6f5def3e 100644 --- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java +++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java @@ -16,8 +16,12 @@ package github.daneren2005.dsub.adapter; import android.content.Context; +import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -39,8 +43,6 @@ public abstract class SectionAdapter extends RecyclerView.Adapter> sections; protected boolean singleSectionHeader; protected OnItemClickedListener onItemClickedListener; - protected UpdateView contextView; - protected T contextItem; private List selected = new ArrayList<>(); protected SectionAdapter() {} @@ -100,9 +102,19 @@ public abstract class SectionAdapter extends RecyclerView.Adapter extends RecyclerView.Adapter onItemClickedListener) { this.onItemClickedListener = onItemClickedListener; } @@ -324,5 +325,7 @@ public abstract class SectionAdapter extends RecyclerView.Adapter { void onItemClicked(T item); + void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, T item); + boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, T item); } } diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java index f3f9eb64..69164036 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java @@ -17,6 +17,7 @@ package github.daneren2005.dsub.fragments; import android.os.Bundle; import android.view.ContextMenu; +import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; @@ -37,6 +38,7 @@ import github.daneren2005.dsub.util.ProgressListener; import github.daneren2005.dsub.util.UserUtil; import github.daneren2005.dsub.util.Util; import github.daneren2005.dsub.adapter.UserAdapter; +import github.daneren2005.dsub.view.UpdateView; public class AdminFragment extends SelectRecyclerFragment { private static String TAG = AdminFragment.class.getSimpleName(); @@ -57,21 +59,16 @@ public class AdminFragment extends SelectRecyclerFragment { } @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - - MenuInflater inflater = context.getMenuInflater(); + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, User item) { if(UserUtil.isCurrentAdmin()) { - inflater.inflate(R.menu.admin_context, menu); + menuInflater.inflate(R.menu.admin_context, menu); } else if(UserUtil.isCurrentRole(User.SETTINGS)) { - inflater.inflate(R.menu.admin_context_user, menu); + menuInflater.inflate(R.menu.admin_context_user, menu); } } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - User user = adapter.getContextItem(); - + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, User user) { switch(menuItem.getItemId()) { case R.id.admin_change_email: UserUtil.changeEmail(context, user); diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java index 96e1d326..0e67b80d 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java @@ -31,6 +31,8 @@ import github.daneren2005.dsub.service.MusicService; import github.daneren2005.dsub.service.MusicServiceFactory; import github.daneren2005.dsub.util.SilentBackgroundTask; import github.daneren2005.dsub.view.ChangeLog; +import github.daneren2005.dsub.view.UpdateView; + import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -401,4 +403,12 @@ public class MainFragment extends SelectRecyclerFragment { showVideos(); } } + + @Override + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Integer item) {} + + @Override + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Integer item) { + return false; + } } 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 0f9d9f68..1b652f57 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java @@ -541,7 +541,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis } } }); - registerForContextMenu(playlistView); if(Build.MODEL.equals("Nexus 4") || Build.MODEL.equals("GT-I9100")) { View slider = rootView.findViewById(R.id.download_slider); @@ -602,42 +601,25 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis } @Override - public void onCreateContextMenu(android.view.ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - if(!primaryFragment) { - return; + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, DownloadFile downloadFile) { + if(Util.isOffline(context)) { + menuInflater.inflate(R.menu.nowplaying_context_offline, menu); + } else { + menuInflater.inflate(R.menu.nowplaying_context, menu); + menu.findItem(R.id.menu_star).setTitle(downloadFile.getSong().isStarred() ? R.string.common_unstar : R.string.common_star); } - UpdateView targetView = songListAdapter.getContextView(); - menuInfo = new AdapterView.AdapterContextMenuInfo(targetView, 0, 0); - - if (view == playlistView) { - DownloadFile downloadFile = songListAdapter.getContextItem(); - - android.view.MenuInflater inflater = context.getMenuInflater(); - if(Util.isOffline(context)) { - inflater.inflate(R.menu.nowplaying_context_offline, menu); - } else { - inflater.inflate(R.menu.nowplaying_context, menu); - menu.findItem(R.id.menu_star).setTitle(downloadFile.getSong().isStarred() ? R.string.common_unstar : R.string.common_star); - } - if (downloadFile.getSong().getParent() == null) { - menu.findItem(R.id.menu_show_album).setVisible(false); - menu.findItem(R.id.menu_show_artist).setVisible(false); - } - - hideMenuItems(menu, (AdapterView.AdapterContextMenuInfo) menuInfo); + if (downloadFile.getSong().getParent() == null) { + menu.findItem(R.id.menu_show_album).setVisible(false); + menu.findItem(R.id.menu_show_artist).setVisible(false); } + + hideMenuItems(menu, updateView); } @Override - public boolean onContextItemSelected(android.view.MenuItem menuItem) { - if(!primaryFragment) { - return false; - } - - DownloadFile downloadFile = songListAdapter.getContextItem(); - return menuItemSelected(menuItem.getItemId(), downloadFile) || super.onContextItemSelected(menuItem); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, DownloadFile downloadFile) { + return menuItemSelected(menuItem.getItemId(), downloadFile); } private boolean menuItemSelected(int menuItemId, final DownloadFile song) { @@ -705,20 +687,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis replaceFragment(fragment); return true; - } case R.id.menu_remove: - new SilentBackgroundTask(context) { - @Override - protected Void doInBackground() throws Throwable { - getDownloadService().remove(song); - return null; - } - - @Override - protected void done(Void result) { - onDownloadListChanged(); - } - }.execute(); - return true; + } case R.id.menu_delete: List songs = new ArrayList(1); songs.add(song.getSong()); diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java index 20a87e7d..96b32d8d 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java @@ -123,32 +123,17 @@ public class SearchFragment extends SubsonicFragment implements SectionAdapter.O } @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - UpdateView targetView = adapter.getContextView(); - menuInfo = new AdapterView.AdapterContextMenuInfo(targetView, 0, 0); - - Serializable item = adapter.getContextItem(); - onCreateContextMenu(menu, view, menuInfo, item); + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Serializable item) { + onCreateContextMenuSupport(menu, menuInflater, updateView, item); if(item instanceof MusicDirectory.Entry && !((MusicDirectory.Entry) item).isVideo() && !Util.isOffline(context)) { menu.removeItem(R.id.song_menu_remove_playlist); } - recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - Serializable item = adapter.getContextItem(); - if(onContextItemSelected(menuItem, item)) { - return true; - } - - return true; + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Serializable item) { + return onContextItemSelected(menuItem, item); } @Override diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java index 8a2b7153..a9d5afd6 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java @@ -79,27 +79,14 @@ public class SelectArtistFragment extends SelectRecyclerFragment impleme } @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - UpdateView targetView = adapter.getContextView(); - menuInfo = new AdapterView.AdapterContextMenuInfo(targetView, 0, 0); - - Artist artist = adapter.getContextItem(); - - onCreateContextMenu(menu, view, menuInfo, artist); + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Artist item) { + onCreateContextMenuSupport(menu, menuInflater, updateView, item); recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuItem.getMenuInfo(); - Artist artist = adapter.getContextItem(); - - return onContextItemSelected(menuItem, artist); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Artist item) { + return onContextItemSelected(menuItem, item); } @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 a774a287..e326e3e2 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java @@ -19,6 +19,7 @@ package github.daneren2005.dsub.fragments; import android.view.ContextMenu; +import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; @@ -43,21 +44,13 @@ public class SelectBookmarkFragment extends SelectRecyclerFragment updateView, MusicDirectory.Entry item) { + menuInflater.inflate(R.menu.select_bookmark_context, menu); + hideMenuItems(menu, updateView); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - MusicDirectory.Entry bookmark = adapter.getContextItem(); - + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, MusicDirectory.Entry bookmark) { switch(menuItem.getItemId()) { case R.id.bookmark_menu_info: displayBookmarkInfo(bookmark); @@ -66,12 +59,8 @@ public class SelectBookmarkFragment extends SelectRecyclerFragment updateView, Entry entry) { if(Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_PLAY_NOW_AFTER, false) && menuItem.getItemId() == R.id.song_menu_play_now) { List songs = new ArrayList(); songs.add(entry); @@ -388,7 +370,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section playNow(songs); return true; } - + if(onContextItemSelected(menuItem, entry)) { return true; } @@ -404,7 +386,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section deletePodcastEpisode((PodcastEpisode) entry); break; } - + return true; } diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java index fe012f62..cb57c280 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java @@ -16,6 +16,9 @@ package github.daneren2005.dsub.fragments; import android.os.Bundle; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -26,6 +29,7 @@ import github.daneren2005.dsub.service.MusicService; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.ProgressListener; import github.daneren2005.dsub.adapter.GenreAdapter; +import github.daneren2005.dsub.view.UpdateView; import java.util.List; @@ -64,4 +68,12 @@ public class SelectGenreFragment extends SelectRecyclerFragment { replaceFragment(fragment); } + + @Override + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Genre item) {} + + @Override + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Genre item) { + return false; + } } 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 49589971..7a4c708e 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v7.widget.RecyclerView; import android.view.ContextMenu; +import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; @@ -31,6 +32,7 @@ import github.daneren2005.dsub.util.LoadingTask; import github.daneren2005.dsub.util.UserUtil; import github.daneren2005.dsub.util.Util; import github.daneren2005.dsub.adapter.PlaylistAdapter; +import github.daneren2005.dsub.view.UpdateView; import java.util.ArrayList; import java.util.Arrays; @@ -40,23 +42,19 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment { private static final String TAG = SelectPlaylistFragment.class.getSimpleName(); @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - - MenuInflater inflater = context.getMenuInflater(); + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Playlist playlist) { if (Util.isOffline(context)) { - inflater.inflate(R.menu.select_playlist_context_offline, menu); + menuInflater.inflate(R.menu.select_playlist_context_offline, menu); } else { - inflater.inflate(R.menu.select_playlist_context, menu); + menuInflater.inflate(R.menu.select_playlist_context, menu); - Playlist playlist = adapter.getContextItem(); if(SyncUtil.isSyncedPlaylist(context, playlist.getId())) { menu.removeItem(R.id.playlist_menu_sync); } else { menu.removeItem(R.id.playlist_menu_stop_sync); } - + if(!ServerInfo.checkServerVersion(context, "1.8")) { menu.removeItem(R.id.playlist_update_info); } else if(playlist.getPublic() != null && playlist.getPublic() == true && playlist.getId().indexOf(".m3u") == -1 && !UserUtil.getCurrentUsername(context).equals(playlist.getOwner())) { @@ -69,13 +67,7 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment { } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - Playlist playlist = adapter.getContextItem(); - + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Playlist playlist) { SubsonicFragment fragment; Bundle args; FragmentTransaction trans; @@ -119,10 +111,9 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment { case R.id.playlist_update_info: updatePlaylistInfo(playlist); break; - default: - return false; } - return true; + + return false; } @Override diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java index 520d0414..f8afce6e 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java @@ -18,6 +18,8 @@ import android.support.v7.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.ContextMenu; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -37,6 +39,7 @@ import github.daneren2005.dsub.util.SilentBackgroundTask; import github.daneren2005.dsub.util.UserUtil; import github.daneren2005.dsub.util.Util; import github.daneren2005.dsub.adapter.PodcastChannelAdapter; +import github.daneren2005.dsub.view.UpdateView; import java.util.ArrayList; import java.util.List; @@ -61,35 +64,26 @@ public class SelectPodcastsFragment extends SelectRecyclerFragment updateView, PodcastChannel podcast) { if(!Util.isOffline(context) && UserUtil.canPodcast()) { - inflater.inflate(R.menu.select_podcasts_context, menu); + menuInflater.inflate(R.menu.select_podcasts_context, menu); - PodcastChannel podcast = adapter.getContextItem(); if(SyncUtil.isSyncedPodcast(context, podcast.getId())) { menu.removeItem(R.id.podcast_menu_sync); } else { menu.removeItem(R.id.podcast_menu_stop_sync); } } else { - inflater.inflate(R.menu.select_podcasts_context_offline, menu); + menuInflater.inflate(R.menu.select_podcasts_context_offline, menu); } recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - PodcastChannel channel = adapter.getContextItem(); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, PodcastChannel channel) { switch (menuItem.getItemId()) { case R.id.podcast_menu_sync: syncPodcast(channel); @@ -104,7 +98,7 @@ public class SelectPodcastsFragment extends SelectRecyclerFragment(context) { @Override diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectRecyclerFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectRecyclerFragment.java index 526a4312..0c3b27f8 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectRecyclerFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectRecyclerFragment.java @@ -89,7 +89,6 @@ public abstract class SelectRecyclerFragment extends SubsonicFragment impleme } else { recyclerView.setAdapter(adapter = getAdapter(objects)); } - registerForContextMenu(recyclerView); return rootView; } diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java index 3d79b7b9..65723618 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java @@ -19,6 +19,8 @@ import android.support.v7.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.ContextMenu; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; @@ -41,25 +43,19 @@ import github.daneren2005.dsub.util.LoadingTask; import github.daneren2005.dsub.util.ProgressListener; import github.daneren2005.dsub.util.Util; import github.daneren2005.dsub.adapter.ShareAdapter; +import github.daneren2005.dsub.view.UpdateView; public class SelectShareFragment extends SelectRecyclerFragment { private static final String TAG = SelectShareFragment.class.getSimpleName(); @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - android.view.MenuInflater inflater = context.getMenuInflater(); - inflater.inflate(R.menu.select_share_context, menu); + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Share item) { + menuInflater.inflate(R.menu.select_share_context, menu); recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - Share share = adapter.getContextItem(); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Share share) { switch (menuItem.getItemId()) { case R.id.share_menu_share: shareExternal(share); diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java index bf25db77..0a79b3d5 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java @@ -16,6 +16,8 @@ package github.daneren2005.dsub.fragments; import android.view.ContextMenu; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; @@ -60,23 +62,13 @@ public class SelectVideoFragment extends SelectRecyclerFragment updateView, MusicDirectory.Entry item) { + onCreateContextMenuSupport(menu, menuInflater, updateView, item); recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if (menuItem.getGroupId() != getSupportTag()) { - return false; - } - - MusicDirectory.Entry entry = adapter.getContextItem(); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, MusicDirectory.Entry entry) { return onContextItemSelected(menuItem, entry); } } diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java index a89bc280..4e1e51e5 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java @@ -16,6 +16,9 @@ package github.daneren2005.dsub.fragments; import android.os.Bundle; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -29,6 +32,7 @@ import github.daneren2005.dsub.adapter.SectionAdapter; import github.daneren2005.dsub.service.MusicService; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.ProgressListener; +import github.daneren2005.dsub.view.UpdateView; public class SelectYearFragment extends SelectRecyclerFragment { @@ -69,4 +73,12 @@ public class SelectYearFragment extends SelectRecyclerFragment { replaceFragment(fragment); } + + @Override + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, String item) {} + + @Override + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, String item) { + return false; + } } diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java index 088b6d00..5677e445 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java @@ -16,12 +16,9 @@ package github.daneren2005.dsub.fragments; import android.os.Bundle; -import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; import github.daneren2005.dsub.R; import github.daneren2005.dsub.adapter.ArtistAdapter; @@ -84,24 +81,13 @@ public class SimilarArtistFragment extends SelectRecyclerFragment { } @Override - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, view, menuInfo); - UpdateView targetView = adapter.getContextView(); - menuInfo = new AdapterView.AdapterContextMenuInfo(targetView, 0, 0); - - Artist artist = adapter.getContextItem(); - onCreateContextMenu(menu, view, menuInfo, artist); - + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, Artist item) { + onCreateContextMenuSupport(menu, menuInflater, updateView, item); recreateContextMenu(menu); } @Override - public boolean onContextItemSelected(MenuItem menuItem) { - if(menuItem.getGroupId() != getSupportTag()) { - return false; - } - - Artist artist = adapter.getContextItem(); + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, Artist artist) { return onContextItemSelected(menuItem, artist); } 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 a155e807..c5c5a132 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SubsonicFragment.java @@ -34,21 +34,17 @@ import android.os.Bundle; import android.os.StatFs; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.internal.view.ContextThemeWrapper; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; -import android.view.ContextMenu; import android.view.GestureDetector; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; -import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; @@ -195,17 +191,15 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR return false; } - public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo, Object selected) { - MenuInflater inflater = context.getMenuInflater(); - + public void onCreateContextMenuSupport(Menu menu, MenuInflater menuInflater, UpdateView updateView, Object selected) { if(selected instanceof Entry) { Entry entry = (Entry) selected; if(entry instanceof PodcastEpisode && !entry.isVideo()) { if(Util.isOffline(context)) { - inflater.inflate(R.menu.select_podcast_episode_context_offline, menu); + menuInflater.inflate(R.menu.select_podcast_episode_context_offline, menu); } else { - inflater.inflate(R.menu.select_podcast_episode_context, menu); + menuInflater.inflate(R.menu.select_podcast_episode_context, menu); if(entry.getBookmark() == null) { menu.removeItem(R.id.bookmark_menu_delete); @@ -214,10 +208,10 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR } else if (entry.isDirectory()) { if(Util.isOffline(context)) { - inflater.inflate(R.menu.select_album_context_offline, menu); + menuInflater.inflate(R.menu.select_album_context_offline, menu); } else { - inflater.inflate(R.menu.select_album_context, menu); + menuInflater.inflate(R.menu.select_album_context, menu); if(Util.isTagBrowsing(context)) { menu.removeItem(R.id.menu_rate); @@ -226,10 +220,10 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR menu.findItem(entry.isDirectory() ? R.id.album_menu_star : R.id.song_menu_star).setTitle(entry.isStarred() ? R.string.common_unstar : R.string.common_star); } else if(!entry.isVideo()) { if(Util.isOffline(context)) { - inflater.inflate(R.menu.select_song_context_offline, menu); + menuInflater.inflate(R.menu.select_song_context_offline, menu); } else { - inflater.inflate(R.menu.select_song_context, menu); + menuInflater.inflate(R.menu.select_song_context, menu); if(entry.getBookmark() == null) { menu.removeItem(R.id.bookmark_menu_delete); @@ -238,28 +232,28 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR menu.findItem(entry.isDirectory() ? R.id.album_menu_star : R.id.song_menu_star).setTitle(entry.isStarred() ? R.string.common_unstar : R.string.common_star); } else { if(Util.isOffline(context)) { - inflater.inflate(R.menu.select_video_context_offline, menu); + menuInflater.inflate(R.menu.select_video_context_offline, menu); } else { - inflater.inflate(R.menu.select_video_context, menu); + menuInflater.inflate(R.menu.select_video_context, menu); } } } else if(selected instanceof Artist) { Artist artist = (Artist) selected; if(Util.isOffline(context)) { - inflater.inflate(R.menu.select_artist_context_offline, menu); + menuInflater.inflate(R.menu.select_artist_context_offline, menu); } else { - inflater.inflate(R.menu.select_artist_context, menu); + menuInflater.inflate(R.menu.select_artist_context, menu); menu.findItem(R.id.artist_menu_star).setTitle(artist.isStarred() ? R.string.common_unstar : R.string.common_star); } } - hideMenuItems(menu, (AdapterView.AdapterContextMenuInfo) menuInfo); + hideMenuItems(menu, updateView); } - protected void hideMenuItems(ContextMenu menu, AdapterView.AdapterContextMenuInfo info) { + protected void hideMenuItems(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); @@ -290,8 +284,8 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR if(!Util.isOffline(context)) { // If we are looking at a standard song view, get downloadFile to cache what options to show - if(info.targetView instanceof SongView) { - SongView songView = (SongView) info.targetView; + if(updateView instanceof SongView) { + SongView songView = (SongView) updateView; DownloadFile downloadFile = songView.getDownloadFile(); try { @@ -314,17 +308,17 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR } } // Apply similar logic to album views - else if(info.targetView instanceof AlbumView || info.targetView instanceof ArtistView || info.targetView instanceof ArtistEntryView) { + else if(updateView instanceof AlbumView || updateView instanceof ArtistView || updateView instanceof ArtistEntryView) { File folder = null; int id = 0; - if(info.targetView instanceof AlbumView) { - folder = ((AlbumView) info.targetView).getFile(); + if(updateView instanceof AlbumView) { + folder = ((AlbumView) updateView).getFile(); id = R.id.album_menu_delete; - } else if(info.targetView instanceof ArtistView) { - folder = ((ArtistView) info.targetView).getFile(); + } else if(updateView instanceof ArtistView) { + folder = ((ArtistView) updateView).getFile(); id = R.id.artist_menu_delete; - } else if(info.targetView instanceof ArtistEntryView) { - folder = ((ArtistEntryView) info.targetView).getFile(); + } else if(updateView instanceof ArtistEntryView) { + folder = ((ArtistEntryView) updateView).getFile(); id = R.id.artist_menu_delete; } @@ -339,7 +333,7 @@ public class SubsonicFragment extends Fragment implements SwipeRefreshLayout.OnR } } - protected void recreateContextMenu(ContextMenu menu) { + protected void recreateContextMenu(Menu menu) { List menuItems = new ArrayList(); for(int i = 0; i < menu.size(); i++) { MenuItem item = menu.getItem(i); diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java index 25196d66..bdd0472b 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java @@ -16,6 +16,8 @@ package github.daneren2005.dsub.fragments; import android.os.Bundle; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import java.util.List; @@ -29,6 +31,7 @@ import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.ProgressListener; import github.daneren2005.dsub.util.UserUtil; import github.daneren2005.dsub.adapter.SettingsAdapter; +import github.daneren2005.dsub.view.UpdateView; public class UserFragment extends SelectRecyclerFragment{ private User user; @@ -93,4 +96,12 @@ public class UserFragment extends SelectRecyclerFragment{ public void onItemClicked(User.Setting item) { } + + @Override + public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView updateView, User.Setting item) {} + + @Override + public boolean onContextItemSelected(MenuItem menuItem, UpdateView updateView, User.Setting item) { + return false; + } } diff --git a/app/src/main/res/menu/nowplaying_context.xml b/app/src/main/res/menu/nowplaying_context.xml index c9347353..845a98c8 100644 --- a/app/src/main/res/menu/nowplaying_context.xml +++ b/app/src/main/res/menu/nowplaying_context.xml @@ -18,10 +18,6 @@ android:id="@+id/menu_lyrics" android:title="@string/download.menu_lyrics"/> - - diff --git a/app/src/main/res/menu/nowplaying_context_offline.xml b/app/src/main/res/menu/nowplaying_context_offline.xml index 24b23a8d..9ce63d79 100644 --- a/app/src/main/res/menu/nowplaying_context_offline.xml +++ b/app/src/main/res/menu/nowplaying_context_offline.xml @@ -14,10 +14,6 @@ android:id="@+id/menu_show_album" android:title="@string/download.menu_show_album"/> - - diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 97ab596b..e77d0aa7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -190,8 +190,7 @@ Playing shuffle Zeige Album Liedtext - Entferne aus Warteschlange - Alle entfernen + Alle entfernen Bildschirm an Mischen Umschalten diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index cd255e13..b91bc929 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -176,8 +176,7 @@ Reproduciendo en aleatorio Mostrar disco Letras - Eliminar de la cola - Borrar todo + Borrar todo Pantalla encendida Aleatorio Cambiar diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 759e3fd8..d547a261 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -175,8 +175,7 @@ Lecture au hasard Afficher l\'album Paroles - Enlever de la queue - Enlever tout + Enlever tout Ecran actif Hasard Basculer diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 6222989a..6a28c051 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -186,8 +186,7 @@ Sorrend keverése Ugrás az albumhoz Dalszöveg - Eltávolítás a várólistáról - Összes eltávolítása + Összes eltávolítása Kijelző be Sorrend keverése Váltás diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index cfae3ea0..a3bb71be 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -108,7 +108,6 @@ Воспроизводится случайно Показать альбом Текст - Убрать из очереди Очистить Включить подсветку Перемешать diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb0a997b..877b510f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -190,8 +190,7 @@ Playing shuffle Show Album Lyrics - Remove from queue - Remove all + Remove all Screen on Shuffle Toggle -- cgit v1.2.3