Add "Add to playlist" menu button to Album pages

This commit is contained in:
Matthew Simpson 2025-03-09 15:16:04 +00:00
parent 8ac059bb17
commit d66f96432d
No known key found for this signature in database
GPG key ID: 9291883D725C52C9
10 changed files with 27 additions and 1 deletions

View file

@ -31,6 +31,7 @@ import com.cappielloantonio.tempo.service.MediaManager;
import com.cappielloantonio.tempo.service.MediaService; import com.cappielloantonio.tempo.service.MediaService;
import com.cappielloantonio.tempo.ui.activity.MainActivity; import com.cappielloantonio.tempo.ui.activity.MainActivity;
import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter; import com.cappielloantonio.tempo.ui.adapter.SongHorizontalAdapter;
import com.cappielloantonio.tempo.ui.dialog.PlaylistChooserDialog;
import com.cappielloantonio.tempo.util.Constants; import com.cappielloantonio.tempo.util.Constants;
import com.cappielloantonio.tempo.util.DownloadUtil; import com.cappielloantonio.tempo.util.DownloadUtil;
import com.cappielloantonio.tempo.util.MappingUtil; import com.cappielloantonio.tempo.util.MappingUtil;
@ -38,6 +39,7 @@ import com.cappielloantonio.tempo.util.MusicUtil;
import com.cappielloantonio.tempo.viewmodel.AlbumPageViewModel; import com.cappielloantonio.tempo.viewmodel.AlbumPageViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -108,6 +110,17 @@ public class AlbumPageFragment extends Fragment implements ClickCallback {
}); });
return true; return true;
} }
if (item.getItemId() == R.id.action_add_to_playlist) {
albumPageViewModel.getAlbumSongLiveList().observe(getViewLifecycleOwner(), songs -> {
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(songs));
PlaylistChooserDialog dialog = new PlaylistChooserDialog();
dialog.setArguments(bundle);
dialog.show(requireActivity().getSupportFragmentManager(), null);
});
return true;
}
return false; return false;
} }

View file

@ -6,4 +6,9 @@
android:icon="@drawable/ic_file_download" android:icon="@drawable/ic_file_download"
android:title="@string/menu_download_all_button" android:title="@string/menu_download_all_button"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/action_add_to_playlist"
android:icon="@drawable/ic_add"
android:title="@string/menu_add_to_playlist_button"
app:showAsAction="never" />
</menu> </menu>

View file

@ -155,6 +155,7 @@
<string name="login_title_expanded">Subsonic Server</string> <string name="login_title_expanded">Subsonic Server</string>
<string name="media_route_menu_title">Cast</string> <string name="media_route_menu_title">Cast</string>
<string name="menu_add_button">Hinzufügen</string> <string name="menu_add_button">Hinzufügen</string>
<string name="menu_add_to_playlist_button">Zu Playliste hinzufügen</string>
<string name="menu_download_all_button">Alle Herunterladen</string> <string name="menu_download_all_button">Alle Herunterladen</string>
<string name="menu_download_label">Downloads</string> <string name="menu_download_label">Downloads</string>
<string name="menu_filter_all">Alle</string> <string name="menu_filter_all">Alle</string>

View file

@ -134,6 +134,7 @@
<string name="login_title_expanded">Serveurs Subsonic</string> <string name="login_title_expanded">Serveurs Subsonic</string>
<string name="media_route_menu_title">Cast</string> <string name="media_route_menu_title">Cast</string>
<string name="menu_add_button">Ajouter</string> <string name="menu_add_button">Ajouter</string>
<string name="menu_add_to_playlist_button">Ajouter à une playlist</string>
<string name="menu_download_all_button">Télécharger tout</string> <string name="menu_download_all_button">Télécharger tout</string>
<string name="menu_download_label">Téléchargé</string> <string name="menu_download_label">Téléchargé</string>
<string name="menu_filter_all">Tout</string> <string name="menu_filter_all">Tout</string>

View file

@ -157,6 +157,7 @@
<string name="login_title_expanded">Server Subsonic</string> <string name="login_title_expanded">Server Subsonic</string>
<string name="media_route_menu_title">Trasmetti</string> <string name="media_route_menu_title">Trasmetti</string>
<string name="menu_add_button">Aggiungi</string> <string name="menu_add_button">Aggiungi</string>
<string name="menu_add_to_playlist_button">Aggiungi alla playlist</string>
<string name="menu_download_all_button">Scarica tutto</string> <string name="menu_download_all_button">Scarica tutto</string>
<string name="menu_download_label">Scarica</string> <string name="menu_download_label">Scarica</string>
<string name="menu_filter_all">Tutti</string> <string name="menu_filter_all">Tutti</string>

View file

@ -136,6 +136,7 @@
<string name="login_title_expanded">Subsonic 서버</string> <string name="login_title_expanded">Subsonic 서버</string>
<string name="media_route_menu_title">Cast</string> <string name="media_route_menu_title">Cast</string>
<string name="menu_add_button">추가</string> <string name="menu_add_button">추가</string>
<string name="menu_add_to_playlist_button">플레이리스트에 추가</string>
<string name="menu_download_all_button">모두 다운로드</string> <string name="menu_download_all_button">모두 다운로드</string>
<string name="menu_download_label">다운로드</string> <string name="menu_download_label">다운로드</string>
<string name="menu_filter_all">모두</string> <string name="menu_filter_all">모두</string>

View file

@ -135,6 +135,7 @@
<string name="login_title_expanded">Servidores Subsonic</string> <string name="login_title_expanded">Servidores Subsonic</string>
<string name="media_route_menu_title">Transmitir</string> <string name="media_route_menu_title">Transmitir</string>
<string name="menu_add_button">Adicionar</string> <string name="menu_add_button">Adicionar</string>
<string name="menu_add_to_playlist_button">Adicionar a uma playlist</string>
<string name="menu_download_all_button">Baixar todos</string> <string name="menu_download_all_button">Baixar todos</string>
<string name="menu_download_label">Download</string> <string name="menu_download_label">Download</string>
<string name="menu_filter_all">Todos</string> <string name="menu_filter_all">Todos</string>

View file

@ -154,6 +154,7 @@
<string name="login_title_expanded">Subsonic серверы</string> <string name="login_title_expanded">Subsonic серверы</string>
<string name="media_route_menu_title">Cast</string> <string name="media_route_menu_title">Cast</string>
<string name="menu_add_button">Добавить</string> <string name="menu_add_button">Добавить</string>
<string name="menu_add_to_playlist_button">Добавить в плейлист</string>
<string name="menu_download_all_button">Скачать все</string> <string name="menu_download_all_button">Скачать все</string>
<string name="menu_download_label">Скачать</string> <string name="menu_download_label">Скачать</string>
<string name="menu_filter_all">Все</string> <string name="menu_filter_all">Все</string>

View file

@ -138,6 +138,7 @@
<string name="login_title_expanded">Subsonic 服务器</string> <string name="login_title_expanded">Subsonic 服务器</string>
<string name="media_route_menu_title">投送</string> <string name="media_route_menu_title">投送</string>
<string name="menu_add_button">添加</string> <string name="menu_add_button">添加</string>
<string name="menu_add_to_playlist_button">添加到播放列表</string>
<string name="menu_download_all_button">全部下载</string> <string name="menu_download_all_button">全部下载</string>
<string name="menu_download_label">下载</string> <string name="menu_download_label">下载</string>
<string name="menu_filter_all">全部</string> <string name="menu_filter_all">全部</string>

View file

@ -159,6 +159,7 @@
<string name="login_title_expanded">Subsonic servers</string> <string name="login_title_expanded">Subsonic servers</string>
<string name="media_route_menu_title">Cast</string> <string name="media_route_menu_title">Cast</string>
<string name="menu_add_button">Add</string> <string name="menu_add_button">Add</string>
<string name="menu_add_to_playlist_button">Add to playlist</string>
<string name="menu_download_all_button">Download all</string> <string name="menu_download_all_button">Download all</string>
<string name="menu_download_label">Download</string> <string name="menu_download_label">Download</string>
<string name="menu_filter_all">All</string> <string name="menu_filter_all">All</string>