String extraction from everywhere

This commit is contained in:
CappielloAntonio 2021-09-04 19:00:41 +02:00
parent d169e3b188
commit b28c230f5a
53 changed files with 333 additions and 170 deletions

17
.idea/misc.xml generated
View file

@ -41,22 +41,32 @@
<entry key="app/src/main/res/drawable/ui_empty_list.xml" value="0.28055555555555556" /> <entry key="app/src/main/res/drawable/ui_empty_list.xml" value="0.28055555555555556" />
<entry key="app/src/main/res/layout/activity_main.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/activity_main.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/bottom_sheet_album_dialog.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/bottom_sheet_album_dialog.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/bottom_sheet_artist_dialog.xml" value="0.225" />
<entry key="app/src/main/res/layout/bottom_sheet_song_dialog.xml" value="0.21666666666666667" /> <entry key="app/src/main/res/layout/bottom_sheet_song_dialog.xml" value="0.21666666666666667" />
<entry key="app/src/main/res/layout/chip_search_filter_genre.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/dialog_playlist_chooser.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/dialog_playlist_chooser.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/dialog_playlist_creator.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/dialog_playlist_creator.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/dialog_playlist_editor.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/dialog_playlist_editor.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/dialog_rating.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/dialog_rating.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/dialog_server_signup.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/dialog_server_signup.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_album_catalogue.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/fragment_album_catalogue.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_album_list_page.xml" value="0.225" />
<entry key="app/src/main/res/layout/fragment_album_page.xml" value="0.2769409038238702" /> <entry key="app/src/main/res/layout/fragment_album_page.xml" value="0.2769409038238702" />
<entry key="app/src/main/res/layout/fragment_artist_catalogue.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_artist_list_page.xml" value="0.225" />
<entry key="app/src/main/res/layout/fragment_artist_page.xml" value="0.1" /> <entry key="app/src/main/res/layout/fragment_artist_page.xml" value="0.1" />
<entry key="app/src/main/res/layout/fragment_download.xml" value="0.283363802559415" /> <entry key="app/src/main/res/layout/fragment_download.xml" value="0.283363802559415" />
<entry key="app/src/main/res/layout/fragment_filter.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_genre_catalogue.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_home.xml" value="0.283363802559415" /> <entry key="app/src/main/res/layout/fragment_home.xml" value="0.283363802559415" />
<entry key="app/src/main/res/layout/fragment_landing.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_library.xml" value="0.1" /> <entry key="app/src/main/res/layout/fragment_library.xml" value="0.1" />
<entry key="app/src/main/res/layout/fragment_login.xml" value="0.3166496424923391" /> <entry key="app/src/main/res/layout/fragment_login.xml" value="0.3166496424923391" />
<entry key="app/src/main/res/layout/fragment_player_bottom_sheet.xml" value="0.3166496424923391" /> <entry key="app/src/main/res/layout/fragment_player_bottom_sheet.xml" value="0.3166496424923391" />
<entry key="app/src/main/res/layout/fragment_playlist_catalogue.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/fragment_playlist_catalogue.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_playlist_page.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/fragment_playlist_page.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_settings.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/fragment_song_list_page.xml" value="0.225" />
<entry key="app/src/main/res/layout/item_home_album_placeholder.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_home_album_placeholder.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_home_discover_song.xml" value="0.3166496424923391" /> <entry key="app/src/main/res/layout/item_home_discover_song.xml" value="0.3166496424923391" />
<entry key="app/src/main/res/layout/item_home_discovery_placeholder.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_home_discovery_placeholder.xml" value="0.3229166666666667" />
@ -72,7 +82,14 @@
<entry key="app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_horizontal_track.xml" value="0.5557163531114327" /> <entry key="app/src/main/res/layout/item_horizontal_track.xml" value="0.5557163531114327" />
<entry key="app/src/main/res/layout/item_library_album.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_library_album.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_artist.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_artist_page_or_similar_album.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_catalogue_album.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_catalogue_artist.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_catalogue_genre.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_catalogue_playlist.xml" value="0.225" />
<entry key="app/src/main/res/layout/item_library_genre.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_library_genre.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_library_similar_artist.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_login_server.xml" value="0.25" /> <entry key="app/src/main/res/layout/item_login_server.xml" value="0.25" />
<entry key="app/src/main/res/layout/item_placehoder_discovery.xml" value="0.3229166666666667" /> <entry key="app/src/main/res/layout/item_placehoder_discovery.xml" value="0.3229166666666667" />
<entry key="app/src/main/res/layout/item_placeholder_album.xml" value="0.1" /> <entry key="app/src/main/res/layout/item_placeholder_album.xml" value="0.1" />

View file

@ -109,7 +109,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
} }
@Override @Override

View file

@ -53,7 +53,7 @@ public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHo
Playlist playlist = playlists.get(position); Playlist playlist = playlists.get(position);
holder.textPlaylistName.setText(MusicUtil.getReadableString(playlist.getName())); holder.textPlaylistName.setText(MusicUtil.getReadableString(playlist.getName()));
holder.textPlaylistSongCount.setText("Song count: " + playlist.getSongCount()); holder.textPlaylistSongCount.setText(R.string.playlist_info_song_count + playlist.getSongCount());
CustomGlideRequest.Builder CustomGlideRequest.Builder
.from(context, playlist.getPrimary(), CustomGlideRequest.PLAYLIST_PIC, null) .from(context, playlist.getPrimary(), CustomGlideRequest.PLAYLIST_PIC, null)

View file

@ -48,7 +48,7 @@ public class PlaylistHorizontalAdapter extends RecyclerView.Adapter<PlaylistHori
Playlist playlist = playlists.get(position); Playlist playlist = playlists.get(position);
holder.playlistTitle.setText(MusicUtil.getReadableString(playlist.getName())); holder.playlistTitle.setText(MusicUtil.getReadableString(playlist.getName()));
holder.playlistTrackCount.setText(MusicUtil.getReadableString(playlist.getSongCount() + " tracks")); holder.playlistTrackCount.setText(playlist.getSongCount() + R.string.playlist_counted_tracks);
holder.playlistDuration.setText(MusicUtil.getReadableDurationString(playlist.getDuration(), false)); holder.playlistDuration.setText(MusicUtil.getReadableDurationString(playlist.getDuration(), false));
} }

View file

@ -104,7 +104,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
} }
@Override @Override

View file

@ -91,9 +91,9 @@ public class AlbumCatalogueFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Albums"); bind.toolbar.setTitle(R.string.album_catalogue_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -1,5 +1,6 @@
package com.cappielloantonio.play.ui.fragment; package com.cappielloantonio.play.ui.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -11,6 +12,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.AlbumHorizontalAdapter; import com.cappielloantonio.play.adapter.AlbumHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding; import com.cappielloantonio.play.databinding.FragmentAlbumListPageBinding;
import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Album;
@ -56,19 +58,19 @@ public class AlbumListPageFragment extends Fragment {
private void init() { private void init() {
if (requireArguments().getString(Album.RECENTLY_PLAYED) != null) { if (requireArguments().getString(Album.RECENTLY_PLAYED) != null) {
albumListPageViewModel.title = Album.RECENTLY_PLAYED; albumListPageViewModel.title = Album.RECENTLY_PLAYED;
bind.pageTitleLabel.setText("Recently played albums"); bind.pageTitleLabel.setText(R.string.album_list_page_recently_played);
} else if (requireArguments().getString(Album.MOST_PLAYED) != null) { } else if (requireArguments().getString(Album.MOST_PLAYED) != null) {
albumListPageViewModel.title = Album.MOST_PLAYED; albumListPageViewModel.title = Album.MOST_PLAYED;
bind.pageTitleLabel.setText("Most played albums"); bind.pageTitleLabel.setText(R.string.album_list_page_most_played);
} else if (requireArguments().getString(Album.RECENTLY_ADDED) != null) { } else if (requireArguments().getString(Album.RECENTLY_ADDED) != null) {
albumListPageViewModel.title = Album.RECENTLY_ADDED; albumListPageViewModel.title = Album.RECENTLY_ADDED;
bind.pageTitleLabel.setText("Recently added albums"); bind.pageTitleLabel.setText(R.string.album_list_page_recently_added);
} else if (requireArguments().getString(Album.STARRED) != null) { } else if (requireArguments().getString(Album.STARRED) != null) {
albumListPageViewModel.title = Album.STARRED; albumListPageViewModel.title = Album.STARRED;
bind.pageTitleLabel.setText("Starred albums"); bind.pageTitleLabel.setText(R.string.album_list_page_starred);
} else if (requireArguments().getString(Album.DOWNLOADED) != null) { } else if (requireArguments().getString(Album.DOWNLOADED) != null) {
albumListPageViewModel.title = Album.DOWNLOADED; albumListPageViewModel.title = Album.DOWNLOADED;
bind.pageTitleLabel.setText("Downloaded albums"); bind.pageTitleLabel.setText(R.string.album_list_page_downloaded);
} else if (requireArguments().getParcelable("artist_object") != null) { } else if (requireArguments().getParcelable("artist_object") != null) {
albumListPageViewModel.artist = requireArguments().getParcelable("artist_object"); albumListPageViewModel.artist = requireArguments().getParcelable("artist_object");
albumListPageViewModel.title = Album.FROM_ARTIST; albumListPageViewModel.title = Album.FROM_ARTIST;
@ -88,9 +90,9 @@ public class AlbumListPageFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Albums"); bind.toolbar.setTitle(R.string.album_list_page_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -127,7 +127,7 @@ public class AlbumPageFragment extends Fragment {
bundle.putParcelable("artist_object", artist); bundle.putParcelable("artist_object", artist);
activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle); activity.navController.navigate(R.id.action_albumPageFragment_to_artistPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show();
})); }));
} }

View file

@ -91,9 +91,9 @@ public class ArtistCatalogueFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Artists"); bind.toolbar.setTitle(R.string.artist_catalogue_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.ArtistHorizontalAdapter; import com.cappielloantonio.play.adapter.ArtistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding; import com.cappielloantonio.play.databinding.FragmentArtistListPageBinding;
import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.model.Artist;
@ -55,10 +56,10 @@ public class ArtistListPageFragment extends Fragment {
private void init() { private void init() {
if (requireArguments().getString(Artist.STARRED) != null) { if (requireArguments().getString(Artist.STARRED) != null) {
artistListPageViewModel.title = Artist.STARRED; artistListPageViewModel.title = Artist.STARRED;
bind.pageTitleLabel.setText("Starred artists"); bind.pageTitleLabel.setText(R.string.artist_list_page_starred);
} else if (requireArguments().getString(Artist.DOWNLOADED) != null) { } else if (requireArguments().getString(Artist.DOWNLOADED) != null) {
artistListPageViewModel.title = Artist.DOWNLOADED; artistListPageViewModel.title = Artist.DOWNLOADED;
bind.pageTitleLabel.setText("Downloaded artists"); bind.pageTitleLabel.setText(R.string.artist_list_page_downloaded);
} }
} }
@ -74,9 +75,9 @@ public class ArtistListPageFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.artistInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Artists"); bind.toolbar.setTitle(R.string.artist_list_page_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -145,7 +145,7 @@ public class ArtistPageFragment extends Fragment {
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
activity.isBottomSheetInPeek(true); activity.isBottomSheetInPeek(true);
} else { } else {
Toast.makeText(requireContext(), "Error retrieving artist's songs", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
} }
}); });
}); });
@ -155,7 +155,7 @@ public class ArtistPageFragment extends Fragment {
artistRepository.getInstantMix(artistPageViewModel.getArtist(), 20, new MediaCallback() { artistRepository.getInstantMix(artistPageViewModel.getArtist(), 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
} }
@Override @Override
@ -169,7 +169,7 @@ public class ArtistPageFragment extends Fragment {
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else { } else {
Toast.makeText(requireContext(), "Error retrieving artist's radio", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show();
} }
} }
}); });

View file

@ -64,7 +64,7 @@ public class FilterFragment extends Fragment {
if (filterViewModel.getFilters().size() > 1) if (filterViewModel.getFilters().size() > 1)
activity.navController.navigate(R.id.action_filterFragment_to_songListPageFragment, bundle); activity.navController.navigate(R.id.action_filterFragment_to_songListPageFragment, bundle);
else else
Toast.makeText(requireContext(), "Select two or more filters", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.filter_info_selection), Toast.LENGTH_SHORT).show();
}); });
} }
@ -81,9 +81,9 @@ public class FilterFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.genreFilterInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.genreFilterInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Filter"); bind.toolbar.setTitle(R.string.filter_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -91,9 +91,9 @@ public class GenreCatalogueFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.genreInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.genreInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Genre Catalogue"); bind.toolbar.setTitle(R.string.genre_catalogue_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -69,9 +69,9 @@ public class LoginFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.serverInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.serverInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Subsonic servers"); bind.toolbar.setTitle(R.string.login_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -93,9 +93,9 @@ public class PlaylistCatalogueFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Playlist Catalogue"); bind.toolbar.setTitle(R.string.playlist_catalogue_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -109,8 +109,8 @@ public class PlaylistPageFragment extends Fragment {
bind.animToolbar.setTitle(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName())); bind.animToolbar.setTitle(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName()));
bind.playlistNameLabel.setText(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName())); bind.playlistNameLabel.setText(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName()));
bind.playlistSongCountLabel.setText("Song count: " + playlistPageViewModel.getPlaylist().getSongCount()); bind.playlistSongCountLabel.setText(getString(R.string.playlist_song_count) + playlistPageViewModel.getPlaylist().getSongCount());
bind.playlistDurationLabel.setText("Playlist duration: " + MusicUtil.getReadableDurationString(playlistPageViewModel.getPlaylist().getDuration(), false)); bind.playlistDurationLabel.setText(getString(R.string.playlist_duration) + MusicUtil.getReadableDurationString(playlistPageViewModel.getPlaylist().getDuration(), false));
if (playlistPageViewModel.isOffline()) { if (playlistPageViewModel.isOffline()) {
bind.playlistSongCountLabel.setVisibility(View.GONE); bind.playlistSongCountLabel.setVisibility(View.GONE);

View file

@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.AlbumAdapter; import com.cappielloantonio.play.adapter.AlbumAdapter;
import com.cappielloantonio.play.adapter.ArtistAdapter; import com.cappielloantonio.play.adapter.ArtistAdapter;
import com.cappielloantonio.play.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
@ -129,7 +130,7 @@ public class SearchFragment extends Fragment {
searchView.collapse(); searchView.collapse();
search(query); search(query);
} else { } else {
Toast.makeText(requireContext(), "Enter at least three characters", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.search_info_minimum_characters), Toast.LENGTH_SHORT).show();
} }
}); });

View file

@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.App; import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentSongListPageBinding; import com.cappielloantonio.play.databinding.FragmentSongListPageBinding;
import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.model.Song;
@ -62,21 +63,21 @@ public class SongListPageFragment extends Fragment {
private void init() { private void init() {
if (requireArguments().getString(Song.RECENTLY_PLAYED) != null) { if (requireArguments().getString(Song.RECENTLY_PLAYED) != null) {
songListPageViewModel.title = Song.RECENTLY_PLAYED; songListPageViewModel.title = Song.RECENTLY_PLAYED;
bind.pageTitleLabel.setText("Recently played tracks"); bind.pageTitleLabel.setText(R.string.song_list_page_recently_played);
} else if (requireArguments().getString(Song.MOST_PLAYED) != null) { } else if (requireArguments().getString(Song.MOST_PLAYED) != null) {
songListPageViewModel.title = Song.MOST_PLAYED; songListPageViewModel.title = Song.MOST_PLAYED;
bind.pageTitleLabel.setText("Most played tracks"); bind.pageTitleLabel.setText(R.string.song_list_page_most_played);
} else if (requireArguments().getString(Song.RECENTLY_ADDED) != null) { } else if (requireArguments().getString(Song.RECENTLY_ADDED) != null) {
songListPageViewModel.title = Song.RECENTLY_ADDED; songListPageViewModel.title = Song.RECENTLY_ADDED;
bind.pageTitleLabel.setText("Recently added tracks"); bind.pageTitleLabel.setText(R.string.song_list_page_recently_added);
} else if (requireArguments().getString(Song.BY_GENRE) != null) { } else if (requireArguments().getString(Song.BY_GENRE) != null) {
songListPageViewModel.title = Song.BY_GENRE; songListPageViewModel.title = Song.BY_GENRE;
songListPageViewModel.genre = requireArguments().getParcelable("genre_object"); songListPageViewModel.genre = requireArguments().getParcelable("genre_object");
bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.genre.getName()) + ": all tracks"); bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.genre.getName()) + getString(R.string.song_list_page_all));
} else if (requireArguments().getString(Song.BY_ARTIST) != null) { } else if (requireArguments().getString(Song.BY_ARTIST) != null) {
songListPageViewModel.title = Song.BY_ARTIST; songListPageViewModel.title = Song.BY_ARTIST;
songListPageViewModel.artist = requireArguments().getParcelable("artist_object"); songListPageViewModel.artist = requireArguments().getParcelable("artist_object");
bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.artist.getName()) + "'s top tracks"); bind.pageTitleLabel.setText(MusicUtil.getReadableString(songListPageViewModel.artist.getName()) + getString(R.string.song_list_page_top));
} else if (requireArguments().getString(Song.BY_GENRES) != null) { } else if (requireArguments().getString(Song.BY_GENRES) != null) {
songListPageViewModel.title = Song.BY_GENRES; songListPageViewModel.title = Song.BY_GENRES;
songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list"); songListPageViewModel.filters = requireArguments().getStringArrayList("filters_list");
@ -85,13 +86,13 @@ public class SongListPageFragment extends Fragment {
} else if (requireArguments().getString(Song.BY_YEAR) != null) { } else if (requireArguments().getString(Song.BY_YEAR) != null) {
songListPageViewModel.title = Song.BY_YEAR; songListPageViewModel.title = Song.BY_YEAR;
songListPageViewModel.year = requireArguments().getInt("year_object"); songListPageViewModel.year = requireArguments().getInt("year_object");
bind.pageTitleLabel.setText("Year " + songListPageViewModel.year); bind.pageTitleLabel.setText(getString(R.string.song_list_page_year) + songListPageViewModel.year);
} else if (requireArguments().getString(Song.STARRED) != null) { } else if (requireArguments().getString(Song.STARRED) != null) {
songListPageViewModel.title = Song.STARRED; songListPageViewModel.title = Song.STARRED;
bind.pageTitleLabel.setText("Starred tracks"); bind.pageTitleLabel.setText(R.string.song_list_page_starred);
} else if (requireArguments().getString(Song.DOWNLOADED) != null) { } else if (requireArguments().getString(Song.DOWNLOADED) != null) {
songListPageViewModel.title = Song.DOWNLOADED; songListPageViewModel.title = Song.DOWNLOADED;
bind.pageTitleLabel.setText("Downloaded"); bind.pageTitleLabel.setText(R.string.song_list_page_downloaded);
} else if (requireArguments().getParcelable("album_object") != null) { } else if (requireArguments().getParcelable("album_object") != null) {
songListPageViewModel.album = requireArguments().getParcelable("album_object"); songListPageViewModel.album = requireArguments().getParcelable("album_object");
songListPageViewModel.title = Song.FROM_ALBUM; songListPageViewModel.title = Song.FROM_ALBUM;
@ -111,9 +112,9 @@ public class SongListPageFragment extends Fragment {
bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) {
bind.toolbar.setTitle("Songs"); bind.toolbar.setTitle(R.string.song_list_page_title);
} else { } else {
bind.toolbar.setTitle(""); bind.toolbar.setTitle(R.string.empty_string);
} }
}); });
} }

View file

@ -83,7 +83,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
albumRepository.getInstantMix(album, 20, new MediaCallback() { albumRepository.getInstantMix(album, 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
dismissBottomSheet(); dismissBottomSheet();
} }
@ -99,7 +99,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else { } else {
Toast.makeText(requireContext(), "Error retrieving album's radio", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_radio), Toast.LENGTH_SHORT).show();
} }
dismissBottomSheet(); dismissBottomSheet();
@ -162,7 +162,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
bundle.putParcelable("artist_object", artist); bundle.putParcelable("artist_object", artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_artist), Toast.LENGTH_SHORT).show();
dismissBottomSheet(); dismissBottomSheet();
})); }));

View file

@ -77,7 +77,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
artistRepository.getInstantMix(artist, 20, new MediaCallback() { artistRepository.getInstantMix(artist, 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
dismissBottomSheet(); dismissBottomSheet();
} }
@ -93,7 +93,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
} else { } else {
Toast.makeText(requireContext(), "Error retrieving artist's radio", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show();
} }
dismissBottomSheet(); dismissBottomSheet();
@ -112,7 +112,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).isBottomSheetInPeek(true);
} else { } else {
Toast.makeText(requireContext(), "Error retrieving artist's songs", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
} }
dismissBottomSheet(); dismissBottomSheet();

View file

@ -106,7 +106,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
songRepository.getInstantMix(song, 20, new MediaCallback() { songRepository.getInstantMix(song, 20, new MediaCallback() {
@Override @Override
public void onError(Exception exception) { public void onError(Exception exception) {
Log.e(TAG, "onError: " + exception.getMessage()); Log.e(TAG, "onError() " + exception.getMessage());
} }
@Override @Override
@ -177,7 +177,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
bundle.putParcelable("album_object", album); bundle.putParcelable("album_object", album);
NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.albumPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), "Error retrieving album", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_album), Toast.LENGTH_SHORT).show();
dismissBottomSheet(); dismissBottomSheet();
})); }));
@ -189,7 +189,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
bundle.putParcelable("artist_object", artist); bundle.putParcelable("artist_object", artist);
NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle);
} else } else
Toast.makeText(requireContext(), "Error retrieving artist", Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.song_bottom_sheet_error_retrieving_artist), Toast.LENGTH_SHORT).show();
dismissBottomSheet(); dismissBottomSheet();
})); }));

View file

@ -35,10 +35,10 @@ public class PlaylistChooserDialog extends DialogFragment {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setView(bind.getRoot()) builder.setView(bind.getRoot())
.setTitle("Add to a playlist") .setTitle(R.string.playlist_chooser_dialog_title)
.setNeutralButton("Create", (dialog, id) -> { .setNeutralButton(R.string.playlist_chooser_dialog_neutral_button, (dialog, id) -> {
}) })
.setNegativeButton("Cancel", (dialog, id) -> dialog.cancel()); .setNegativeButton(R.string.playlist_chooser_dialog_negative_button, (dialog, id) -> dialog.cancel());
return builder.create(); return builder.create();
} }

View file

@ -40,11 +40,11 @@ public class PlaylistEditorDialog extends DialogFragment {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setView(bind.getRoot()) builder.setView(bind.getRoot())
.setTitle("Create playlist") .setTitle(R.string.playlist_editor_dialog_title)
.setPositiveButton("Save", (dialog, id) -> { .setPositiveButton(R.string.playlist_editor_dialog_positive_button, (dialog, id) -> {
}) })
.setNeutralButton("Delete", (dialog, id) -> dialog.cancel()) .setNeutralButton(R.string.playlist_editor_dialog_neutral_button, (dialog, id) -> dialog.cancel())
.setNegativeButton("Cancel", (dialog, id) -> dialog.cancel()); .setNegativeButton(R.string.playlist_editor_dialog_negative_button, (dialog, id) -> dialog.cancel());
return builder.create(); return builder.create();
} }
@ -157,7 +157,7 @@ public class PlaylistEditorDialog extends DialogFragment {
playlistName = Objects.requireNonNull(bind.playlistNameTextView.getText()).toString().trim(); playlistName = Objects.requireNonNull(bind.playlistNameTextView.getText()).toString().trim();
if (TextUtils.isEmpty(playlistName)) { if (TextUtils.isEmpty(playlistName)) {
bind.playlistNameTextView.setError("Required"); bind.playlistNameTextView.setError(getString(R.string.error_required));
return false; return false;
} }

View file

@ -30,9 +30,9 @@ public class RatingDialog extends DialogFragment {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setView(bind.getRoot()) builder.setView(bind.getRoot())
.setTitle("Rate") .setTitle(R.string.rating_dialog_title)
.setNegativeButton("Cancel", (dialog, id) -> dialog.cancel()) .setNegativeButton(R.string.rating_dialog_negative_button, (dialog, id) -> dialog.cancel())
.setPositiveButton("Save", (dialog, id) -> ratingViewModel.rate((int) bind.ratingBar.getRating())); .setPositiveButton(R.string.rating_dialog_positive_button, (dialog, id) -> ratingViewModel.rate((int) bind.ratingBar.getRating()));
return builder.create(); return builder.create();
} }

View file

@ -56,12 +56,12 @@ public class ServerSignupDialog extends DialogFragment {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setView(bind.getRoot()) builder.setView(bind.getRoot())
.setTitle("Add server") .setTitle(R.string.server_signup_dialog_title)
.setNeutralButton("Delete", (dialog, id) -> { .setNeutralButton(R.string.server_signup_dialog_neutral_button, (dialog, id) -> {
}) })
.setPositiveButton("Save", (dialog, id) -> { .setPositiveButton(R.string.server_signup_dialog_positive_button, (dialog, id) -> {
}) })
.setNegativeButton("Cancel", (dialog, id) -> dialog.cancel()); .setNegativeButton(R.string.server_signup_dialog_negative_button, (dialog, id) -> dialog.cancel());
return builder.create(); return builder.create();
} }
@ -119,17 +119,17 @@ public class ServerSignupDialog extends DialogFragment {
directAccess = bind.directAccessCheckbox.isChecked(); directAccess = bind.directAccessCheckbox.isChecked();
if (TextUtils.isEmpty(serverName)) { if (TextUtils.isEmpty(serverName)) {
bind.serverNameTextView.setError("Required"); bind.serverNameTextView.setError(getString(R.string.error_required));
return false; return false;
} }
if (TextUtils.isEmpty(username)) { if (TextUtils.isEmpty(username)) {
bind.usernameTextView.setError("Required"); bind.usernameTextView.setError(getString(R.string.error_required));
return false; return false;
} }
if (TextUtils.isEmpty(server)) { if (TextUtils.isEmpty(server)) {
bind.serverTextView.setError("Required"); bind.serverTextView.setError(getString(R.string.error_required));
return false; return false;
} }

View file

@ -47,7 +47,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/colorAccent" android:background="@color/colorAccent"
android:gravity="center" android:gravity="center"
android:text="Offline mode" android:text="@string/activity_info_offline_mode"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="6sp" android:textSize="6sp"
android:visibility="gone" /> android:visibility="gone" />

View file

@ -98,7 +98,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Instant mix" android:text="@string/album_bottom_sheet_instant_mix"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -114,7 +114,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Riproduzione casuale" android:text="@string/album_bottom_sheet_shuffle"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -130,7 +130,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Riproduci dopo" android:text="@string/album_bottom_sheet_play_next"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -146,7 +146,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Aggiungi alla coda" android:text="@string/album_bottom_sheet_add_to_queue"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -162,7 +162,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Scarica tutte" android:text="@string/album_bottom_sheet_download_all"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -178,7 +178,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Rimuovi tutte" android:text="@string/album_bottom_sheet_remove_all"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -194,7 +194,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Vai all'artista" android:text="@string/album_bottom_sheet_go_to_artist"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />

View file

@ -85,7 +85,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Instant mix" android:text="@string/artist_bottom_sheet_instant_mix"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -101,7 +101,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Riproduzione casuale" android:text="@string/artist_bottom_sheet_shuffle"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />

View file

@ -99,7 +99,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Instant mix" android:text="@string/song_bottom_sheet_instant_mix"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -115,7 +115,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Riproduci dopo" android:text="@string/song_bottom_sheet_play_next"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -131,7 +131,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Aggiungi alla coda" android:text="@string/song_bottom_sheet_add_to_queue"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -147,7 +147,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Valuta" android:text="@string/song_bottom_sheet_rate"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -163,7 +163,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Scarica" android:text="@string/song_bottom_sheet_download"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -179,7 +179,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Rimuovi" android:text="@string/song_bottom_sheet_remove"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -195,7 +195,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Aggiungi alla playlist" android:text="@string/song_bottom_sheet_add_to_playlist"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -211,7 +211,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Vai all'album" android:text="@string/song_bottom_sheet_go_to_album"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />
@ -227,7 +227,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="Vai all'artista" android:text="@string/song_bottom_sheet_go_to_artist"
android:textColor="@color/titleTextColor" android:textColor="@color/titleTextColor"
android:textFontWeight="700" android:textFontWeight="700"
android:textSize="14sp" /> android:textSize="14sp" />

View file

@ -12,7 +12,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:gravity="center" android:gravity="center"
android:text="No playlists created" android:text="@string/playlist_chooser_dialog_empty"
android:clipToPadding="false" android:clipToPadding="false"
android:visibility="gone"/> android:visibility="gone"/>

View file

@ -22,7 +22,7 @@
android:id="@+id/playlist_name_text_view" android:id="@+id/playlist_name_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="Playlist Name" android:hint="@string/playlist_editor_dialog_hint_name"
android:inputType="textNoSuggestions" android:inputType="textNoSuggestions"
android:textCursorDrawable="@null" /> android:textCursorDrawable="@null" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>

View file

@ -22,7 +22,7 @@
android:id="@+id/server_name_text_view" android:id="@+id/server_name_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="Server Name" android:hint="@string/server_signup_dialog_hint_name"
android:inputType="textNoSuggestions" android:inputType="textNoSuggestions"
android:text="Navidrome" android:text="Navidrome"
android:textCursorDrawable="@null" /> android:textCursorDrawable="@null" />
@ -46,7 +46,7 @@
android:id="@+id/username_text_view" android:id="@+id/username_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="Username" android:hint="@string/server_signup_dialog_hint_username"
android:inputType="textShortMessage" android:inputType="textShortMessage"
android:text="antonio" android:text="antonio"
android:textCursorDrawable="@null"/> android:textCursorDrawable="@null"/>
@ -72,7 +72,7 @@
android:id="@+id/password_text_view" android:id="@+id/password_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="Password" android:hint="@string/server_signup_dialog_hint_password"
android:inputType="textPassword" android:inputType="textPassword"
android:text="!$4EBXhSPUi4$E#oagvAisCA" android:text="!$4EBXhSPUi4$E#oagvAisCA"
android:textCursorDrawable="@null"/> android:textCursorDrawable="@null"/>
@ -96,7 +96,7 @@
android:id="@+id/server_text_view" android:id="@+id/server_text_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="Server URL" android:hint="@string/server_signup_dialog_hint_url"
android:inputType="textNoSuggestions" android:inputType="textNoSuggestions"
android:text="http://192.168.1.81:4533" android:text="http://192.168.1.81:4533"
android:textCursorDrawable="@null"/> android:textCursorDrawable="@null"/>
@ -108,5 +108,5 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:text="Direct access"/> android:text="@string/server_signup_dialog_action_direct_access"/>
</LinearLayout> </LinearLayout>

View file

@ -38,7 +38,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Browse Albums" android:text="@string/album_catalogue_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent" /> app:layout_constraintStart_toEndOf="parent" />

View file

@ -120,7 +120,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Play" android:text="@string/album_page_play_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_play" app:icon="@drawable/ic_play"
app:iconGravity="textStart" app:iconGravity="textStart"
@ -137,7 +137,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Shuffle" android:text="@string/album_page_shuffle_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_shuffle" app:icon="@drawable/ic_shuffle"
app:iconGravity="textStart" app:iconGravity="textStart"
@ -199,7 +199,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="32dp" android:paddingTop="32dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:text="More like this" /> android:text="@string/album_page_extra_info_button" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/similar_albums_recycler_view" android:id="@+id/similar_albums_recycler_view"

View file

@ -40,7 +40,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Browse Artists" android:text="@string/artist_catalogue_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent" /> app:layout_constraintStart_toEndOf="parent" />

View file

@ -84,7 +84,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Shuffle" android:text="@string/artist_page_shuffle_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_shuffle" app:icon="@drawable/ic_shuffle"
app:iconGravity="textStart" app:iconGravity="textStart"
@ -101,7 +101,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Radio" android:text="@string/artist_page_radio_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_feed" app:icon="@drawable/ic_feed"
app:iconGravity="textStart" app:iconGravity="textStart"
@ -135,7 +135,7 @@
android:layout_weight="1" android:layout_weight="1"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Biography" /> android:text="@string/artist_page_title_biography_section" />
<TextView <TextView
android:id="@+id/bio_more_text_view_clickable" android:id="@+id/bio_more_text_view_clickable"
@ -143,7 +143,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="More" /> android:text="@string/artist_page_title_biography_more_button" />
</LinearLayout> </LinearLayout>
<TextView <TextView
@ -177,7 +177,7 @@
android:layout_weight="1" android:layout_weight="1"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Most Streamed Songs" /> android:text="@string/artist_page_title_most_streamed_song_section" />
<TextView <TextView
android:id="@+id/most_streamed_song_text_view_clickable" android:id="@+id/most_streamed_song_text_view_clickable"
@ -185,7 +185,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="See all" /> android:text="@string/artist_page_title_most_streamed_song_see_all_button" />
</LinearLayout> </LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
@ -211,7 +211,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:text="Albums" /> android:text="@string/artist_page_title_album_section" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/albums_recycler_view" android:id="@+id/albums_recycler_view"
@ -239,7 +239,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:text="More like this" /> android:text="@string/artist_page_title_album_more_like_this_button" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/similar_artists_recycler_view" android:id="@+id/similar_artists_recycler_view"

View file

@ -65,7 +65,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="12dp" android:paddingTop="12dp"
android:text="No downloads yet!" /> android:text="@string/download_info_empty_title" />
<TextView <TextView
android:id="@+id/subtitle_download_screen" android:id="@+id/subtitle_download_screen"
@ -74,7 +74,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="56dp" android:paddingStart="56dp"
android:paddingEnd="56dp" android:paddingEnd="56dp"
android:text="Once you download a song, you'll find it here" /> android:text="@string/download_info_empty_subtitle" />
</LinearLayout> </LinearLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
@ -115,7 +115,7 @@
android:layout_weight="1" android:layout_weight="1"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Artists" /> android:text="@string/download_title_artist_section" />
<TextView <TextView
@ -125,7 +125,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/download_title_artist_see_all_button" />
</LinearLayout> </LinearLayout>
@ -170,7 +170,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Albums" /> android:text="@string/download_title_album_section" />
<TextView <TextView
@ -181,7 +181,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/download_title_album_see_all" />
</LinearLayout> </LinearLayout>
@ -226,7 +226,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Tracks" /> android:text="@string/download_title_tracks_section" />
<TextView <TextView
@ -237,7 +237,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/download_title_tracks_see_all_button" />
</LinearLayout> </LinearLayout>
@ -282,7 +282,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Playlists" /> android:text="@string/download_title_playlist_section" />
<TextView <TextView
@ -293,7 +293,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/download_title_playlist_see_all_button" />
</LinearLayout> </LinearLayout>

View file

@ -39,7 +39,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Filter Genres" android:text="@string/filter_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />

View file

@ -39,7 +39,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Browse Genres" android:text="@string/genre_catalogue_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />

View file

@ -70,7 +70,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Music discovery" /> android:text="@string/home_title_music_discovery" />
<!-- slideview --> <!-- slideview -->
<androidx.viewpager2.widget.ViewPager2 <androidx.viewpager2.widget.ViewPager2
@ -101,7 +101,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Start mix from a song you liked" android:text="@string/home_subtitle_made_for_you"
android:textAllCaps="true" /> android:textAllCaps="true" />
<TextView <TextView
@ -111,7 +111,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Made for you" /> android:text="@string/home_title_made_for_you" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/similar_tracks_recycler_view" android:id="@+id/similar_tracks_recycler_view"
@ -157,7 +157,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Most played" /> android:text="@string/home_title_most_played" />
<TextView <TextView
@ -168,7 +168,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_most_played_see_all_button" />
</LinearLayout> </LinearLayout>
@ -215,7 +215,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Last played" /> android:text="@string/home_title_last_played" />
<TextView <TextView
@ -226,7 +226,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_last_played_see_all_button" />
</LinearLayout> </LinearLayout>
@ -263,7 +263,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Flashback" /> android:text="@string/home_title_flashback" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/years_recycler_view" android:id="@+id/years_recycler_view"
@ -308,7 +308,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="★ Starred tracks" /> android:text="@string/home_title_starred_tracks" />
<TextView <TextView
@ -319,7 +319,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_starred_tracks_see_all_button" />
</LinearLayout> </LinearLayout>
@ -363,7 +363,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="★ Starred albums" /> android:text="@string/home_title_starred_albums" />
<TextView <TextView
@ -374,7 +374,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_starred_albums_see_all_button" />
</LinearLayout> </LinearLayout>
@ -418,7 +418,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="★ Starred artists" /> android:text="@string/home_title_starred_artists" />
<TextView <TextView
@ -429,7 +429,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_starred_artists_see_all_button" />
</LinearLayout> </LinearLayout>
@ -474,7 +474,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Recently added" /> android:text="@string/home_title_recently_added" />
<TextView <TextView
@ -485,7 +485,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/home_title_recently_added_see_all_button" />
</LinearLayout> </LinearLayout>

View file

@ -68,7 +68,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="New releases" /> android:text="@string/library_title_new_releases" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/new_releases_recycler_view" android:id="@+id/new_releases_recycler_view"
@ -110,7 +110,7 @@
android:layout_weight="1" android:layout_weight="1"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Albums" /> android:text="@string/library_title_album" />
<TextView <TextView
@ -120,7 +120,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/library_title_album_see_all_button" />
</LinearLayout> </LinearLayout>
@ -168,7 +168,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Artists" /> android:text="@string/library_title_artist" />
<TextView <TextView
@ -179,7 +179,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/library_title_artist_see_all_button" />
</LinearLayout> </LinearLayout>
@ -227,7 +227,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Genres" /> android:text="@string/library_title_genre" />
<TextView <TextView
@ -238,7 +238,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/library_title_genre_see_all_button" />
</LinearLayout> </LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
@ -284,7 +284,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="Playlists" /> android:text="@string/library_title_playlist" />
<TextView <TextView
@ -295,7 +295,7 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:text="See all" /> android:text="@string/library_title_playlist_see_all_button" />
</LinearLayout> </LinearLayout>

View file

@ -36,7 +36,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Subsonic servers" android:text="@string/login_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent" /> app:layout_constraintStart_toEndOf="parent" />
@ -52,7 +52,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:gravity="center" android:gravity="center"
android:text="No server added" android:text="@string/login_empty"
android:clipToPadding="false" android:clipToPadding="false"
android:paddingBottom="@dimen/global_padding_bottom" android:paddingBottom="@dimen/global_padding_bottom"
app:layout_behavior="@string/appbar_scrolling_view_behavior" app:layout_behavior="@string/appbar_scrolling_view_behavior"

View file

@ -38,7 +38,7 @@
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:paddingBottom="24dp" android:paddingBottom="24dp"
android:text="Browse Playlists" android:text="@string/playlist_catalogue_title_expanded"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent" /> app:layout_constraintStart_toEndOf="parent" />

View file

@ -120,7 +120,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Play" android:text="@string/playlist_page_play_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_play" app:icon="@drawable/ic_play"
app:iconGravity="textStart" app:iconGravity="textStart"
@ -137,7 +137,7 @@
android:layout_weight="1" android:layout_weight="1"
android:backgroundTint="@color/buttonBackgroundColor" android:backgroundTint="@color/buttonBackgroundColor"
android:padding="10dp" android:padding="10dp"
android:text="Shuffle" android:text="@string/playlist_page_shuffle_button"
android:textAllCaps="false" android:textAllCaps="false"
app:icon="@drawable/ic_shuffle" app:icon="@drawable/ic_shuffle"
app:iconGravity="textStart" app:iconGravity="textStart"

View file

@ -65,7 +65,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Songs" /> android:text="@string/search_title_song" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/search_result_tracks_recycler_view" android:id="@+id/search_result_tracks_recycler_view"
@ -94,7 +94,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Albums" /> android:text="@string/search_title_album" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/search_result_album_recycler_view" android:id="@+id/search_result_album_recycler_view"
@ -125,7 +125,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:text="Artists" /> android:text="@string/search_title_artist" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/search_result_artist_recycler_view" android:id="@+id/search_result_artist_recycler_view"

View file

@ -17,7 +17,7 @@
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:paddingStart="24dp" android:paddingStart="24dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:text="Now playing" android:text="@string/player_bottom_sheet_title"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />

View file

@ -5,6 +5,6 @@
android:id="@+id/action_download_album" android:id="@+id/action_download_album"
android:icon="@drawable/ic_file_download" android:icon="@drawable/ic_file_download"
android:iconTint="@color/titleTextColor" android:iconTint="@color/titleTextColor"
android:title="Download all" android:title="@string/menu_download_all_button"
app:showAsAction="never" /> app:showAsAction="never" />
</menu> </menu>

View file

@ -3,13 +3,13 @@
<item <item
android:id="@+id/homeFragment" android:id="@+id/homeFragment"
android:icon="@drawable/ic_home" android:icon="@drawable/ic_home"
android:title="@string/home_menu_label" /> android:title="@string/menu_home_label" />
<item <item
android:id="@+id/libraryFragment" android:id="@+id/libraryFragment"
android:icon="@drawable/ic_graphic_eq" android:icon="@drawable/ic_graphic_eq"
android:title="@string/library_menu_label" /> android:title="@string/menu_library_label" />
<item <item
android:id="@+id/downloadFragment" android:id="@+id/downloadFragment"
android:icon="@drawable/ic_play_for_work" android:icon="@drawable/ic_play_for_work"
android:title="@string/download_menu_label" /> android:title="@string/menu_download_label" />
</menu> </menu>

View file

@ -5,6 +5,6 @@
android:id="@+id/action_add" android:id="@+id/action_add"
android:icon="@drawable/ic_add" android:icon="@drawable/ic_add"
android:iconTint="@color/titleTextColor" android:iconTint="@color/titleTextColor"
android:title="Add" android:title="@string/menu_add_button"
app:showAsAction="always" /> app:showAsAction="always" />
</menu> </menu>

View file

@ -4,12 +4,12 @@
<item <item
android:id="@+id/action_search" android:id="@+id/action_search"
android:icon="@drawable/ic_search" android:icon="@drawable/ic_search"
android:title="Search" android:title="@string/menu_search_button"
app:showAsAction="always" /> app:showAsAction="ifRoom" />
<item <item
android:id="@+id/action_settings" android:id="@+id/action_settings"
android:icon="@drawable/ic_settings" android:icon="@drawable/ic_settings"
android:title="Settings" android:title="@string/menu_settings_button"
app:showAsAction="never" /> app:showAsAction="never" />
</menu> </menu>

View file

@ -5,6 +5,6 @@
android:id="@+id/action_download_playlist" android:id="@+id/action_download_playlist"
android:icon="@drawable/ic_file_download" android:icon="@drawable/ic_file_download"
android:iconTint="@color/titleTextColor" android:iconTint="@color/titleTextColor"
android:title="Download all" android:title="@string/menu_download_all_button"
app:showAsAction="never" /> app:showAsAction="never" />
</menu> </menu>

View file

@ -6,7 +6,7 @@
android:id="@+id/action_search" android:id="@+id/action_search"
android:icon="@drawable/ic_search" android:icon="@drawable/ic_search"
android:iconTint="@color/titleTextColor" android:iconTint="@color/titleTextColor"
android:title="Search" android:title="@string/menu_search_button"
app:actionViewClass="android.widget.SearchView" app:actionViewClass="android.widget.SearchView"
app:showAsAction="ifRoom" /> app:showAsAction="ifRoom" />

View file

@ -7,10 +7,10 @@
<string name="covers_cache">Covers cache</string> <string name="covers_cache">Covers cache</string>
<string name="media_cache">Media cache</string> <string name="media_cache">Media cache</string>
<string name="image_size">Cover size</string> <string name="image_size">Cover size</string>
<string name="library_menu_label">Library</string> <string name="menu_library_label">Library</string>
<string name="home_menu_label">Home</string> <string name="menu_home_label">Home</string>
<string name="search_menu_label">Search</string> <string name="search_menu_label">Search</string>
<string name="download_menu_label">Download</string> <string name="menu_download_label">Download</string>
<string name="label_placeholder">--</string> <string name="label_placeholder">--</string>
<string name="label_dot_separator"></string> <string name="label_dot_separator"></string>
@ -39,4 +39,145 @@
<string name="playing_notification_name">Playing Notification</string> <string name="playing_notification_name">Playing Notification</string>
<string name="exo_download_notification_channel_name">Downloads</string> <string name="exo_download_notification_channel_name">Downloads</string>
<string name="album_error_retrieving_radio">Error retrieving album\'s radio</string>
<string name="album_error_retrieving_artist">Error retrieving artist</string>
<string name="album_catalogue_title">Albums</string>
<string name="empty_string" />
<string name="album_list_page_recently_played">Recently played albums</string>
<string name="album_list_page_most_played">Most played albums</string>
<string name="album_list_page_recently_added">Recently added albums</string>
<string name="album_list_page_starred">Starred albums</string>
<string name="album_list_page_downloaded">Downloaded albums</string>
<string name="album_list_page_title">Albums</string>
<string name="artist_error_retrieving_radio">Error retrieving artist\'s radio</string>
<string name="artist_error_retrieving_tracks">Error retrieving artist\'s tracks</string>
<string name="artist_catalogue_title">Artists</string>
<string name="artist_list_page_starred">Starred artists</string>
<string name="artist_list_page_downloaded">Downloaded artists</string>
<string name="artist_list_page_title">Artists</string>
<string name="filter_info_selection">Select two or more filters</string>
<string name="filter_title">Filter</string>
<string name="genre_catalogue_title">Genre Catalogue</string>
<string name="login_title">Subsonic servers</string>
<string name="playlist_info_song_count">\"Song count: \"</string>
<string name="playlist_catalogue_title">Playlist Catalogue</string>
<string name="playlist_chooser_dialog_title">Add to a playlist</string>
<string name="playlist_chooser_dialog_neutral_button">Create</string>
<string name="playlist_chooser_dialog_negative_button">Cancel</string>
<string name="playlist_editor_dialog_title">Create playlist</string>
<string name="playlist_editor_dialog_positive_button">Save</string>
<string name="playlist_editor_dialog_neutral_button">Delete</string>
<string name="playlist_editor_dialog_negative_button">Cancel</string>
<string name="error_required">Required</string>
<string name="playlist_counted_tracks">\" tracks\"</string>
<string name="playlist_song_count">\"Song count: \"</string>
<string name="playlist_duration">\"Playlist duration: \"</string>
<string name="rating_dialog_title">Rate</string>
<string name="rating_dialog_negative_button">Cancel</string>
<string name="rating_dialog_positive_button">Save</string>
<string name="search_info_minimum_characters">Enter at least three characters</string>
<string name="server_signup_dialog_title">Add server</string>
<string name="server_signup_dialog_neutral_button">Delete</string>
<string name="server_signup_dialog_positive_button">Save</string>
<string name="server_signup_dialog_negative_button">Cancel</string>
<string name="song_bottom_sheet_error_retrieving_album">Error retrieving album</string>
<string name="song_bottom_sheet_error_retrieving_artist">Error retrieving artist</string>
<string name="song_list_page_recently_played">Recently played tracks</string>
<string name="song_list_page_most_played">Most played tracks</string>
<string name="song_list_page_recently_added">Recently added tracks</string>
<string name="song_list_page_all">: all tracks</string>
<string name="song_list_page_top">\'s top tracks</string>
<string name="song_list_page_year">\"Year \"</string>
<string name="song_list_page_starred">Starred tracks</string>
<string name="song_list_page_downloaded">Downloaded</string>
<string name="song_list_page_title">Songs</string>
<string name="activity_info_offline_mode">Offline mode</string>
<string name="album_bottom_sheet_instant_mix">Instant mix</string>
<string name="album_bottom_sheet_shuffle">Shuffle</string>
<string name="album_bottom_sheet_play_next">Play next</string>
<string name="album_bottom_sheet_add_to_queue">Add to queue</string>
<string name="album_bottom_sheet_download_all">Download all</string>
<string name="album_bottom_sheet_remove_all">Remove all</string>
<string name="album_bottom_sheet_go_to_artist">Go to artist</string>
<string name="artist_bottom_sheet_instant_mix">Instant mix</string>
<string name="artist_bottom_sheet_shuffle">Shuffle</string>
<string name="song_bottom_sheet_instant_mix">Instant mix</string>
<string name="song_bottom_sheet_play_next">Play next</string>
<string name="song_bottom_sheet_add_to_queue">Add to queue</string>
<string name="song_bottom_sheet_rate">Rate</string>
<string name="song_bottom_sheet_download">Download</string>
<string name="song_bottom_sheet_remove">Remove</string>
<string name="song_bottom_sheet_add_to_playlist">Add to playlist</string>
<string name="song_bottom_sheet_go_to_album">Go to album</string>
<string name="song_bottom_sheet_go_to_artist">Go to artist</string>
<string name="playlist_chooser_dialog_empty">No playlists created</string>
<string name="playlist_editor_dialog_hint_name">Playlist Name</string>
<string name="server_signup_dialog_hint_name">Server Name</string>
<string name="server_signup_dialog_hint_username">Username</string>
<string name="server_signup_dialog_hint_password">Password</string>
<string name="server_signup_dialog_hint_url">Server URL</string>
<string name="server_signup_dialog_action_direct_access">Direct access</string>
<string name="album_catalogue_title_expanded">Browse Albums</string>
<string name="album_page_play_button">Play</string>
<string name="album_page_shuffle_button">Shuffle</string>
<string name="album_page_extra_info_button">More like this</string>
<string name="artist_catalogue_title_expanded">Browse Artists</string>
<string name="artist_page_shuffle_button">Shuffle</string>
<string name="artist_page_radio_button">Radio</string>
<string name="artist_page_title_biography_section">Biography</string>
<string name="artist_page_title_biography_more_button">More</string>
<string name="artist_page_title_most_streamed_song_section">Most Streamed Songs</string>
<string name="artist_page_title_most_streamed_song_see_all_button">See all</string>
<string name="artist_page_title_album_section">Albums</string>
<string name="artist_page_title_album_more_like_this_button">More like this</string>
<string name="download_info_empty_title">No downloads yet!</string>
<string name="download_info_empty_subtitle">Once you download a song, you\'ll find it here</string>
<string name="download_title_artist_section">Artists</string>
<string name="download_title_artist_see_all_button">See all</string>
<string name="download_title_album_section">Albums</string>
<string name="download_title_album_see_all">See all</string>
<string name="download_title_tracks_section">Tracks</string>
<string name="download_title_tracks_see_all_button">See all</string>
<string name="download_title_playlist_section">Playlists</string>
<string name="download_title_playlist_see_all_button">See all</string>
<string name="filter_title_expanded">Filter Genres</string>
<string name="genre_catalogue_title_expanded">Browse Genres</string>
<string name="home_title_music_discovery">Music discovery</string>
<string name="home_subtitle_made_for_you">Start mix from a song you liked</string>
<string name="home_title_made_for_you">Made for you</string>
<string name="home_title_most_played">Most played</string>
<string name="home_title_most_played_see_all_button">See all</string>
<string name="home_title_last_played">Last played</string>
<string name="home_title_last_played_see_all_button">See all</string>
<string name="home_title_flashback">Flashback</string>
<string name="home_title_starred_tracks">★ Starred tracks</string>
<string name="home_title_starred_tracks_see_all_button">See all</string>
<string name="home_title_starred_albums">★ Starred albums</string>
<string name="home_title_starred_albums_see_all_button">See all</string>
<string name="home_title_starred_artists">★ Starred artists</string>
<string name="home_title_starred_artists_see_all_button">See all</string>
<string name="home_title_recently_added">Recently added</string>
<string name="home_title_recently_added_see_all_button">See all</string>
<string name="library_title_new_releases">New releases</string>
<string name="library_title_album">Albums</string>
<string name="library_title_album_see_all_button">See all</string>
<string name="library_title_artist">Artists</string>
<string name="library_title_artist_see_all_button">See all</string>
<string name="library_title_genre">Genres</string>
<string name="library_title_genre_see_all_button">See all</string>
<string name="library_title_playlist">Playlists</string>
<string name="library_title_playlist_see_all_button">See all</string>
<string name="login_title_expanded">Subsonic servers</string>
<string name="login_empty">No server added</string>
<string name="playlist_catalogue_title_expanded">Browse Playlists</string>
<string name="playlist_page_play_button">Play</string>
<string name="playlist_page_shuffle_button">Shuffle</string>
<string name="search_title_song">Songs</string>
<string name="search_title_album">Albums</string>
<string name="search_title_artist">Artists</string>
<string name="player_bottom_sheet_title">Now playing</string>
<string name="menu_download_all_button">Download all</string>
<string name="menu_add_button">Add</string>
<string name="menu_search_button">Search</string>
<string name="menu_settings_button">Settings</string>
</resources> </resources>