From e0467e4fff04bcffbd0608f691372116ecaf6b0e Mon Sep 17 00:00:00 2001 From: Materight Date: Sun, 11 Jun 2017 20:27:25 +0200 Subject: [PATCH 01/10] Added "lang" parameter to show localized biography. --- .../gramophone/glide/artistimage/ArtistImageFetcher.java | 2 +- .../gramophone/lastfm/rest/service/LastFMService.java | 2 +- .../gramophone/ui/activities/ArtistDetailActivity.java | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java index e504e849..3fb4e9cc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java +++ b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java @@ -49,7 +49,7 @@ public class ArtistImageFetcher implements DataFetcher { @Override public InputStream loadData(Priority priority) throws Exception { if (!MusicUtil.isArtistNameUnknown(model.artistName) && Util.isAllowedToAutoDownload(context)) { - Response response = lastFMRestClient.getApiService().getArtistInfo(model.artistName, model.skipOkHttpCache ? "no-cache" : null).execute(); + Response response = lastFMRestClient.getApiService().getArtistInfo(model.artistName, null, model.skipOkHttpCache ? "no-cache" : null).execute(); if (!response.isSuccessful()) { throw new IOException("Request failed with code: " + response.code()); diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java index 7883af74..36136ba8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java @@ -21,5 +21,5 @@ public interface LastFMService { Call getAlbumInfo(@Query("album") String albumName, @Query("artist") String artistName); @GET(BASE_QUERY_PARAMETERS + "&method=artist.getinfo") - Call getArtistInfo(@Query("artist") String artistName, @Nullable @Header("Cache-Control") String cacheControl); + Call getArtistInfo(@Query("artist") String artistName, @Nullable @Query("lang") String language, @Nullable @Header("Cache-Control") String cacheControl); } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index 1c235784..f77c9002 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -57,6 +57,8 @@ import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; +import java.util.Locale; + import butterknife.BindView; import butterknife.ButterKnife; import retrofit2.Call; @@ -223,7 +225,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void loadBiography() { - lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), null).enqueue(new Callback() { + lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), Locale.getDefault().getLanguage(), null).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { LastFmArtist lastFmArtist = response.body(); From b4fa4511de50a7c2790d31b132af71d94d0aa411 Mon Sep 17 00:00:00 2001 From: Materight Date: Sun, 11 Jun 2017 21:10:19 +0200 Subject: [PATCH 02/10] Fallback to default if no biography is found --- .../gramophone/ui/activities/ArtistDetailActivity.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index f77c9002..d10b8461 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -225,7 +225,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void loadBiography() { - lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), Locale.getDefault().getLanguage(), null).enqueue(new Callback() { + final Callback bioCallback = new Callback(){ @Override public void onResponse(Call call, Response response) { LastFmArtist lastFmArtist = response.body(); @@ -235,6 +235,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement biography = Html.fromHtml(bio); return; } + else if(call.request().url().queryParameter("lang") != null){ + //If the "lang" parameter is set and no bio is given, retry with default language + lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), null, null).enqueue(this); + } } biography = null; } @@ -244,7 +248,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement t.printStackTrace(); biography = null; } - }); + }; + lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), Locale.getDefault().getLanguage(), null).enqueue(bioCallback); } private MaterialDialog getBiographyDialog() { From 2b4b5f16386578e834fb26a78f033eb7404c223e Mon Sep 17 00:00:00 2001 From: Materight Date: Sun, 11 Jun 2017 22:01:49 +0200 Subject: [PATCH 03/10] Added an option to show the "wiki" of albums. --- .../lastfm/rest/model/LastFmAlbum.java | 23 +++++++ .../lastfm/rest/service/LastFMService.java | 2 +- .../ui/activities/AlbumDetailActivity.java | 62 +++++++++++++++++++ .../tageditor/AlbumTagEditorActivity.java | 2 +- app/src/main/res/menu/menu_album_detail.xml | 5 ++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 93 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java index 1992b7e3..4db56c78 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java @@ -24,6 +24,8 @@ public class LastFmAlbum { @Expose private List image = new ArrayList<>(); + @Expose + private Wiki wiki; public List getImage() { return image; @@ -33,6 +35,27 @@ public class LastFmAlbum { this.image = image; } + public Wiki getWiki() { return wiki; } + + public void setWiki(Wiki wiki) { + this.wiki = wiki; + } + + public class Wiki { + + @Expose + private String content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + } + public static class Image { @SerializedName("#text") diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java index 36136ba8..4a9b33c7 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/service/LastFMService.java @@ -18,7 +18,7 @@ public interface LastFMService { String BASE_QUERY_PARAMETERS = "?format=json&autocorrect=1&api_key=" + API_KEY; @GET(BASE_QUERY_PARAMETERS + "&method=album.getinfo") - Call getAlbumInfo(@Query("album") String albumName, @Query("artist") String artistName); + Call getAlbumInfo(@Query("album") String albumName, @Query("artist") String artistName, @Nullable @Query("lang") String language); @GET(BASE_QUERY_PARAMETERS + "&method=artist.getinfo") Call getArtistInfo(@Query("artist") String artistName, @Nullable @Query("lang") String language, @Nullable @Header("Cache-Control") String cacheControl); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index c3929f9d..1e9381a3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -5,18 +5,23 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; +import android.text.Html; +import android.text.Spanned; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.afollestad.materialcab.MaterialCab; +import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestListener; @@ -34,6 +39,8 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.LoaderIds; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; +import com.kabouzeid.gramophone.lastfm.rest.LastFMRestClient; +import com.kabouzeid.gramophone.lastfm.rest.model.LastFmAlbum; import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; @@ -46,8 +53,13 @@ import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; +import java.util.Locale; + import butterknife.BindView; import butterknife.ButterKnife; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; /** * Be careful when changing things in this Activity! @@ -84,6 +96,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private int toolbarColor; private float toolbarAlpha; + @Nullable + private Spanned wiki; + private LastFMRestClient lastFMRestClient; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -92,6 +108,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements supportPostponeEnterTransition(); + lastFMRestClient = new LastFMRestClient(this); + setUpObservableListViewParams(); setUpToolBar(); setUpViews(); @@ -237,6 +255,42 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements return true; } + private MaterialDialog getWikiDialog() { + return new MaterialDialog.Builder(AlbumDetailActivity.this) + .title(getAlbum().getTitle()) + .content(wiki != null ? wiki : "") + .positiveText(android.R.string.ok) + .build(); + } + + private void loadWiki() { + final Callback wikiCallback = new Callback(){ + @Override + public void onResponse(Call call, Response response) { + LastFmAlbum lastFmAlbum = response.body(); + if (lastFmAlbum.getAlbum().getWiki() != null) { + String wik = lastFmAlbum.getAlbum().getWiki().getContent(); + if (wik != null && !wik.trim().equals("")) { + wiki = Html.fromHtml(wik); + return; + } + } + if(call.request().url().queryParameter("lang") != null){ + //If the "lang" parameter is set and no wiki is given, retry with default language + lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); + } + wiki = null; + } + + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + wiki = null; + } + }; + lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), Locale.getDefault().getLanguage()).enqueue(wikiCallback); + } + @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); @@ -261,6 +315,13 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements case R.id.action_go_to_artist: NavigationUtil.goToArtist(this, getAlbum().getArtistId()); return true; + case R.id.action_wiki: + if (wiki != null) { + getWikiDialog().show(); + } else { + Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + } + return true; } return super.onOptionsItemSelected(item); } @@ -327,6 +388,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setAlbum(Album album) { this.album = album; loadAlbumCover(); + loadWiki(); albumTitleView.setText(album.getTitle()); adapter.swapDataSet(album.songs); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AlbumTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AlbumTagEditorActivity.java index 7a6fd6ce..ef8ec723 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AlbumTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AlbumTagEditorActivity.java @@ -100,7 +100,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text Toast.makeText(this, getResources().getString(R.string.album_or_artist_empty), Toast.LENGTH_SHORT).show(); return; } - lastFMRestClient.getApiService().getAlbumInfo(albumTitleStr, albumArtistNameStr).enqueue(new Callback() { + lastFMRestClient.getApiService().getAlbumInfo(albumTitleStr, albumArtistNameStr, null).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { LastFmAlbum lastFmAlbum = response.body(); diff --git a/app/src/main/res/menu/menu_album_detail.xml b/app/src/main/res/menu/menu_album_detail.xml index 035ab981..40b72e1d 100644 --- a/app/src/main/res/menu/menu_album_detail.xml +++ b/app/src/main/res/menu/menu_album_detail.xml @@ -9,6 +9,11 @@ android:title="@string/action_shuffle_album" app:showAsAction="ifRoom" /> + + Couldn\u2019t play this song. Couldn\u2019t find the artists biography. Biography + Wiki Audio focus denied. Album Artist From 1c42afc00ef5bf3214b0a84707bfb9a278d3dd1f Mon Sep 17 00:00:00 2001 From: Materight Date: Sun, 11 Jun 2017 22:03:27 +0200 Subject: [PATCH 04/10] Added string for wiki unavailable. --- app/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a0370c0a..63f1e9e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,6 +39,7 @@ Playlists Couldn\u2019t play this song. Couldn\u2019t find the artists biography. + Couldn\u2019t find the albums wiki. Biography Wiki Audio focus denied. From dc0e5ed7f8fd34508b6eab8ad9805b9427ee2c6b Mon Sep 17 00:00:00 2001 From: Materight Date: Mon, 12 Jun 2017 10:41:28 +0200 Subject: [PATCH 05/10] Use string of wiki unavailable. --- .../kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 1e9381a3..50ab34dc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -319,7 +319,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements if (wiki != null) { getWikiDialog().show(); } else { - Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); } return true; } From d15f056e00089d8a28bd7b605b31700874166b44 Mon Sep 17 00:00:00 2001 From: Materight Date: Wed, 5 Jul 2017 16:47:41 +0200 Subject: [PATCH 06/10] Added control for the auto download setting. --- .../ui/activities/AlbumDetailActivity.java | 54 +++++++++++++------ .../ui/activities/ArtistDetailActivity.java | 46 +++++++++++----- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 71 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 50ab34dc..102ed301 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -98,6 +98,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Nullable private Spanned wiki; + private MaterialDialog wikiDialog; private LastFMRestClient lastFMRestClient; @Override @@ -255,14 +256,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements return true; } - private MaterialDialog getWikiDialog() { - return new MaterialDialog.Builder(AlbumDetailActivity.this) - .title(getAlbum().getTitle()) - .content(wiki != null ? wiki : "") - .positiveText(android.R.string.ok) - .build(); - } - private void loadWiki() { final Callback wikiCallback = new Callback(){ @Override @@ -272,14 +265,17 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements String wik = lastFmAlbum.getAlbum().getWiki().getContent(); if (wik != null && !wik.trim().equals("")) { wiki = Html.fromHtml(wik); + wikiReady(); + return; + } + else if(call.request().url().queryParameter("lang") != null) { + //If the "lang" parameter is set and no wiki is given, retry with default language + lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); return; } } - if(call.request().url().queryParameter("lang") != null){ - //If the "lang" parameter is set and no wiki is given, retry with default language - lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); - } wiki = null; + wikiReady(); } @Override @@ -291,6 +287,17 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), Locale.getDefault().getLanguage()).enqueue(wikiCallback); } + private void wikiReady(){ + if(!Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) { + if(wiki != null) { + wikiDialog.setContent(wiki); + } else { + wikiDialog.dismiss(); + Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); + } + } + } + @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); @@ -316,10 +323,17 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements NavigationUtil.goToArtist(this, getAlbum().getArtistId()); return true; case R.id.action_wiki: - if (wiki != null) { - getWikiDialog().show(); - } else { - Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); + if(Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) { + if (wiki != null) { + wikiDialog.setContent(wiki); + wikiDialog.show(); + } else { + Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); + } + } + else { + wikiDialog.show(); + loadWiki(); } return true; } @@ -388,7 +402,13 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setAlbum(Album album) { this.album = album; loadAlbumCover(); - loadWiki(); + if(Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) + loadWiki(); + wikiDialog=new MaterialDialog.Builder(AlbumDetailActivity.this) + .title(album.getTitle()) + .content("") + .positiveText(android.R.string.ok) + .build(); albumTitleView.setText(album.getTitle()); adapter.swapDataSet(album.songs); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index d10b8461..4ca2dbea 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -102,6 +102,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private Artist artist; @Nullable private Spanned biography; + private MaterialDialog biographyDialog; private HorizontalAlbumAdapter albumAdapter; private ArtistSongAdapter songAdapter; @@ -233,14 +234,17 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement String bio = lastFmArtist.getArtist().getBio().getContent(); if (bio != null && !bio.trim().equals("")) { biography = Html.fromHtml(bio); + biographyReady(); return; } - else if(call.request().url().queryParameter("lang") != null){ - //If the "lang" parameter is set and no bio is given, retry with default language + else if(call.request().url().queryParameter("lang") != null) { + //If the "lang" parameter is set and no biography is given, retry with default language lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), null, null).enqueue(this); + return; } } biography = null; + biographyReady(); } @Override @@ -252,12 +256,15 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), Locale.getDefault().getLanguage(), null).enqueue(bioCallback); } - private MaterialDialog getBiographyDialog() { - return new MaterialDialog.Builder(ArtistDetailActivity.this) - .title(getArtist().getName()) - .content(biography != null ? biography : "") - .positiveText(android.R.string.ok) - .build(); + private void biographyReady() { + if(!Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) { + if(biography != null) { + biographyDialog.setContent(biography); + } else { + biographyDialog.dismiss(); + Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + } + } } private void loadArtistImage(final boolean forceDownload) { @@ -350,10 +357,17 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement super.onBackPressed(); return true; case R.id.action_biography: - if (biography != null) { - getBiographyDialog().show(); - } else { - Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + if(Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) { + if (biography != null) { + biographyDialog.setContent(biography); + biographyDialog.show(); + } else { + Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + } + } + else { + biographyDialog.show(); + loadBiography(); } return true; case R.id.action_re_download_artist_image: @@ -421,7 +435,13 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setArtist(Artist artist) { this.artist = artist; loadArtistImage(false); - loadBiography(); + if(Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) + loadBiography(); + biographyDialog=new MaterialDialog.Builder(ArtistDetailActivity.this) + .title(artist.getName()) + .content("") + .positiveText(android.R.string.ok) + .build(); artistName.setText(artist.getName()); songAdapter.swapDataSet(artist.getSongs()); albumAdapter.swapDataSet(artist.albums); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 63f1e9e1..54a1dae3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -131,7 +131,7 @@ Colored app shortcuts Start page Show album cover - Auto download artist images + Auto download meta data Blur album cover Colored notification Classic notification design From cee6e6e83a1901778bc778631f32757f778f08ad Mon Sep 17 00:00:00 2001 From: Materight Date: Wed, 5 Jul 2017 17:25:53 +0200 Subject: [PATCH 07/10] Fix for default language --- .../gramophone/ui/activities/AlbumDetailActivity.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 102ed301..6a2f8d9b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -268,11 +268,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements wikiReady(); return; } - else if(call.request().url().queryParameter("lang") != null) { - //If the "lang" parameter is set and no wiki is given, retry with default language - lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); - return; - } + } + if(call.request().url().queryParameter("lang") != null) { + //If the "lang" parameter is set and no wiki is given, retry with default language + lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); + return; } wiki = null; wikiReady(); From 0bd8e4292d1429f96ef1ffb00475dc21f4dc36cc Mon Sep 17 00:00:00 2001 From: Eugene Cheung Date: Wed, 5 Jul 2017 12:36:22 -0400 Subject: [PATCH 08/10] Refactor and rename metadata pref/util --- .../glide/artistimage/ArtistImageFetcher.java | 2 +- .../lastfm/rest/LastFMRestClient.java | 1 - .../lastfm/rest/model/LastFmAlbum.java | 7 -- .../lastfm/rest/model/LastFmArtist.java | 9 -- .../ui/activities/AlbumDetailActivity.java | 96 +++++++++--------- .../ui/activities/ArtistDetailActivity.java | 97 ++++++++++--------- .../com/kabouzeid/gramophone/util/Util.java | 2 +- app/src/main/res/values-ar/strings.xml | 2 +- app/src/main/res/values-bg/strings.xml | 2 +- app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-es-rES/strings.xml | 2 +- app/src/main/res/values-es-rUS/strings.xml | 2 +- app/src/main/res/values-fi/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-he/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-in/strings.xml | 2 +- app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values-iw/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ko/strings.xml | 2 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt-rPT/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-uk/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 6 +- app/src/main/res/xml/pref_images.xml | 2 +- 37 files changed, 133 insertions(+), 145 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java index 3fb4e9cc..1a49230f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java +++ b/app/src/main/java/com/kabouzeid/gramophone/glide/artistimage/ArtistImageFetcher.java @@ -48,7 +48,7 @@ public class ArtistImageFetcher implements DataFetcher { @Override public InputStream loadData(Priority priority) throws Exception { - if (!MusicUtil.isArtistNameUnknown(model.artistName) && Util.isAllowedToAutoDownload(context)) { + if (!MusicUtil.isArtistNameUnknown(model.artistName) && Util.isAllowedToDownloadMetadata(context)) { Response response = lastFMRestClient.getApiService().getArtistInfo(model.artistName, null, model.skipOkHttpCache ? "no-cache" : null).execute(); if (!response.isSuccessful()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java index 77cac50a..9d556c08 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java @@ -18,7 +18,6 @@ import okhttp3.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; - /** * @author Karim Abou Zeid (kabouzeid) */ diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java index 4db56c78..fd4e833a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmAlbum.java @@ -1,4 +1,3 @@ - package com.kabouzeid.gramophone.lastfm.rest.model; import com.google.gson.annotations.Expose; @@ -8,7 +7,6 @@ import java.util.ArrayList; import java.util.List; public class LastFmAlbum { - @Expose private Album album; @@ -21,7 +19,6 @@ public class LastFmAlbum { } public static class Album { - @Expose private List image = new ArrayList<>(); @Expose @@ -42,7 +39,6 @@ public class LastFmAlbum { } public class Wiki { - @Expose private String content; @@ -53,11 +49,9 @@ public class LastFmAlbum { public void setContent(String content) { this.content = content; } - } public static class Image { - @SerializedName("#text") @Expose private String Text; @@ -81,5 +75,4 @@ public class LastFmAlbum { } } } - } diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmArtist.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmArtist.java index 42478cfd..30ca8f37 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmArtist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/model/LastFmArtist.java @@ -1,4 +1,3 @@ - package com.kabouzeid.gramophone.lastfm.rest.model; import com.google.gson.annotations.Expose; @@ -8,7 +7,6 @@ import java.util.ArrayList; import java.util.List; public class LastFmArtist { - @Expose private Artist artist; @@ -21,7 +19,6 @@ public class LastFmArtist { } public static class Artist { - @Expose private List image = new ArrayList<>(); @Expose @@ -44,7 +41,6 @@ public class LastFmArtist { } public class Bio { - @Expose private String content; @@ -55,11 +51,9 @@ public class LastFmArtist { public void setContent(String content) { this.content = content; } - } public static class Image { - @SerializedName("#text") @Expose private String Text; @@ -81,9 +75,6 @@ public class LastFmArtist { public void setSize(String size) { this.size = size; } - } - } - } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 6a2f8d9b..48fe52b5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -257,45 +257,44 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void loadWiki() { - final Callback wikiCallback = new Callback(){ - @Override - public void onResponse(Call call, Response response) { - LastFmAlbum lastFmAlbum = response.body(); - if (lastFmAlbum.getAlbum().getWiki() != null) { - String wik = lastFmAlbum.getAlbum().getWiki().getContent(); - if (wik != null && !wik.trim().equals("")) { - wiki = Html.fromHtml(wik); - wikiReady(); - return; - } - } - if(call.request().url().queryParameter("lang") != null) { - //If the "lang" parameter is set and no wiki is given, retry with default language - lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), null).enqueue(this); - return; - } - wiki = null; - wikiReady(); - } - - @Override - public void onFailure(Call call, Throwable t) { - t.printStackTrace(); - wiki = null; - } - }; - lastFMRestClient.getApiService().getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), Locale.getDefault().getLanguage()).enqueue(wikiCallback); + loadWiki(Locale.getDefault().getLanguage()); } - private void wikiReady(){ - if(!Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) { - if(wiki != null) { - wikiDialog.setContent(wiki); - } else { - wikiDialog.dismiss(); - Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); - } - } + private void loadWiki(@Nullable final String lang) { + wiki = null; + + lastFMRestClient.getApiService() + .getAlbumInfo(getAlbum().getTitle(), getAlbum().getArtistName(), lang) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + final LastFmAlbum lastFmAlbum = response.body(); + if (lastFmAlbum != null && lastFmAlbum.getAlbum().getWiki() != null) { + final String wikiContent = lastFmAlbum.getAlbum().getWiki().getContent(); + if (wikiContent != null && !wikiContent.trim().isEmpty()) { + wiki = Html.fromHtml(wikiContent); + } else if (lang != null) { + // If the "lang" parameter is set and no wiki is given, retry with default language + loadWiki(null); + return; + } + } + + if (!Util.isAllowedToDownloadMetadata(AlbumDetailActivity.this)) { + if (wiki != null) { + wikiDialog.setContent(wiki); + } else { + wikiDialog.dismiss(); + Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + t.printStackTrace(); + } + }); } @Override @@ -323,15 +322,20 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements NavigationUtil.goToArtist(this, getAlbum().getArtistId()); return true; case R.id.action_wiki: - if(Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) { + if (wikiDialog == null) { + wikiDialog = new MaterialDialog.Builder(this) + .title(album.getTitle()) + .positiveText(android.R.string.ok) + .build(); + } + if (Util.isAllowedToDownloadMetadata(this)) { if (wiki != null) { wikiDialog.setContent(wiki); wikiDialog.show(); } else { - Toast.makeText(AlbumDetailActivity.this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); + Toast.makeText(this, getResources().getString(R.string.wiki_unavailable), Toast.LENGTH_SHORT).show(); } - } - else { + } else { wikiDialog.show(); loadWiki(); } @@ -402,13 +406,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setAlbum(Album album) { this.album = album; loadAlbumCover(); - if(Util.isAllowedToAutoDownload(AlbumDetailActivity.this)) + + if (Util.isAllowedToDownloadMetadata(this)) { loadWiki(); - wikiDialog=new MaterialDialog.Builder(AlbumDetailActivity.this) - .title(album.getTitle()) - .content("") - .positiveText(android.R.string.ok) - .build(); + } + albumTitleView.setText(album.getTitle()); adapter.swapDataSet(album.songs); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index 4ca2dbea..e2807f0f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -117,7 +117,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement supportPostponeEnterTransition(); lastFMRestClient = new LastFMRestClient(this); - usePalette=PreferenceUtil.getInstance(this).albumArtistColoredFooters(); + usePalette = PreferenceUtil.getInstance(this).albumArtistColoredFooters(); initViews(); setUpObservableListViewParams(); @@ -226,45 +226,45 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void loadBiography() { - final Callback bioCallback = new Callback(){ - @Override - public void onResponse(Call call, Response response) { - LastFmArtist lastFmArtist = response.body(); - if (lastFmArtist.getArtist() != null) { - String bio = lastFmArtist.getArtist().getBio().getContent(); - if (bio != null && !bio.trim().equals("")) { - biography = Html.fromHtml(bio); - biographyReady(); - return; - } - else if(call.request().url().queryParameter("lang") != null) { - //If the "lang" parameter is set and no biography is given, retry with default language - lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), null, null).enqueue(this); - return; - } - } - biography = null; - biographyReady(); - } - - @Override - public void onFailure(Call call, Throwable t) { - t.printStackTrace(); - biography = null; - } - }; - lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), Locale.getDefault().getLanguage(), null).enqueue(bioCallback); + loadBiography(Locale.getDefault().getLanguage()); } - private void biographyReady() { - if(!Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) { - if(biography != null) { - biographyDialog.setContent(biography); - } else { - biographyDialog.dismiss(); - Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); - } - } + private void loadBiography(@Nullable final String lang) { + biography = null; + + lastFMRestClient.getApiService() + .getArtistInfo(getArtist().getName(), lang, null) + .enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + final LastFmArtist lastFmArtist = response.body(); + if (lastFmArtist != null && lastFmArtist.getArtist() != null) { + String bio = lastFmArtist.getArtist().getBio().getContent(); + if (bio != null && !bio.trim().isEmpty()) { + biography = Html.fromHtml(bio); + } else if (lang != null) { + // If the "lang" parameter is set and no biography is given, retry with default language + loadBiography(null); + return; + } + } + + if (!Util.isAllowedToDownloadMetadata(ArtistDetailActivity.this)) { + if (biography != null) { + biographyDialog.setContent(biography); + } else { + biographyDialog.dismiss(); + Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); + } + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + t.printStackTrace(); + biography = null; + } + }); } private void loadArtistImage(final boolean forceDownload) { @@ -357,15 +357,20 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement super.onBackPressed(); return true; case R.id.action_biography: - if(Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) { + if (biographyDialog == null) { + biographyDialog = new MaterialDialog.Builder(this) + .title(artist.getName()) + .positiveText(android.R.string.ok) + .build(); + } + if (Util.isAllowedToDownloadMetadata(ArtistDetailActivity.this)) { if (biography != null) { biographyDialog.setContent(biography); biographyDialog.show(); } else { Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.biography_unavailable), Toast.LENGTH_SHORT).show(); } - } - else { + } else { biographyDialog.show(); loadBiography(); } @@ -435,13 +440,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setArtist(Artist artist) { this.artist = artist; loadArtistImage(false); - if(Util.isAllowedToAutoDownload(ArtistDetailActivity.this)) + + if (Util.isAllowedToDownloadMetadata(this)) { loadBiography(); - biographyDialog=new MaterialDialog.Builder(ArtistDetailActivity.this) - .title(artist.getName()) - .content("") - .positiveText(android.R.string.ok) - .build(); + } + artistName.setText(artist.getName()); songAdapter.swapDataSet(artist.getSongs()); albumAdapter.swapDataSet(artist.albums); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java index b71c550b..ac7bfe32 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java @@ -121,7 +121,7 @@ public class Util { } else return false; } - public static boolean isAllowedToAutoDownload(final Context context) { + public static boolean isAllowedToDownloadMetadata(final Context context) { switch (PreferenceUtil.getInstance(context).autoDownloadImagesPolicy()) { case "always": return true; diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 05e5cfe2..4115cb56 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -115,7 +115,7 @@ شريط تنقل ملون صفحة البدء أظهر صورة الألبوم - حمل صور الفنانين تلقائياً + حمل صور الفنانين تلقائياً تغييم صورة الألبوم إشعار ملون تجاهل صور متجر الوسائط diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index b8fe998b..7ef9a248 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -117,7 +117,7 @@ Оцветени навигационни бутони Начална страница Покажи обложката на албум - Автоматично изтегляне на изображения на артист + Автоматично изтегляне на изображения на артист Размажи обложката Оцвети известията Игнорирай вградените обложки diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 845b2dcf..0bfca68c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -122,7 +122,7 @@ Barevné zkratky aplikace Zvolit výchozí obrazovku Obal alba na odemykací obrazovce - Automaticky stahovat obrázky umělců + Automaticky stahovat obrázky umělců Rozostřit obal alba Barevné notifikace Ignorovat obaly Media Storu diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f05954dc..a2c799bf 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -122,7 +122,7 @@ Gefärbte App-Shortcuts Startseite Album Cover anzeigen - Interpreten Bilder automatisch herunterladen + Interpreten Bilder automatisch herunterladen Album Cover weichzeichnen Gefärbte Benachrichtigung Media Store Cover ignorieren diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 646e4285..36899828 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -118,7 +118,7 @@ Έγχρωμη μπάρα πλοήγησης Αρχική σελίδα Εμφάνιση album art - Αυτόματο κατέβασμα πορτρέτων καλλιτεχνών + Αυτόματο κατέβασμα πορτρέτων καλλιτεχνών Θάμπωμα πορτρέτων καλλιτεχνών Χρωματιστή πλοήγηση Παράληψη των album art στην SD diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d9f834ec..8941ec6b 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -122,7 +122,7 @@ Atajos coloreados de la aplicación Página de inicio Mostrar carátula del álbum - Descargar automaticamente las fotos de los artistas + Descargar automaticamente las fotos de los artistas Desenfocar carátula de álbum Notificación coloreada Ignorar carátulas provenientes del almacenamiento local diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index 77d6c869..0050911a 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -122,7 +122,7 @@ Accesos directos coloreados Sección de inicio Mostrar carátula del álbum - Descarga automática de imágenes de artistas + Descarga automática de imágenes de artistas Desenfocar imagen de álbum Notificación coloreada Ignorar imágenes de la librería del sistema diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d1c3b78f..79109f1e 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -117,7 +117,7 @@ Värillinen navigointipalkki Aloitussivu Näytä albumin kansi - Lataa automaattisesti artistien kuvat + Lataa automaattisesti artistien kuvat Sumenna albumin kansi Värillinen ilmoitus Sivuuta Media Storen albumikannet diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f13fd242..90b21c0e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -122,7 +122,7 @@ Raccourcis de l\'application colorés Page d\'accueil Afficher la pochette d\'album - Télécharger automatiquement les images + Télécharger automatiquement les images Pochette d\'album floue Notification colorée Ignorer le stockage des pochettes diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 2cf98310..493ffb12 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -116,7 +116,7 @@ סרגל ניווט צבעוני עמוד פתיחה הצג עטיפת אלבום - הורדה אוטומטית של תמונות האמן + הורדה אוטומטית של תמונות האמן טשטוש עטיפת האלבום התראה צבעונית ניגון ללא מרווחים בין השירים diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 94ce16e3..96b2962c 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -117,7 +117,7 @@ Obojena navigacijska traka Početna stranica Prikaži omot albuma na zaklj. zaslonu - Automatski preuzmi slike izvođača + Automatski preuzmi slike izvođača Zamagli omot albuma Obojene obavijesti Ignoriraj Media Store omote diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 4d3865f4..fed6556f 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -122,7 +122,7 @@ Színes alkalmazás hivatkozások Kezdő oldal Albumboritó megjelenítése - Előadó képének automatikus letöltése + Előadó képének automatikus letöltése Albumborító elhomályosítása Színezett értesítés A médiában tárolt albumborítók figyelmen kívül hagyása diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 0e5274e9..4733ed57 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -117,7 +117,7 @@ Warnai alat navigasi di bagian bawah layar Halaman awal Perlihatkan sampul album pada layar kunci - Unduh otomatis gambar-gambar artis + Unduh otomatis gambar-gambar artis Buramkan sampul album Notifikasi berwarna Abaikan sampul-sampul dari \'Media Store\' android. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 0e5274e9..4733ed57 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -117,7 +117,7 @@ Warnai alat navigasi di bagian bawah layar Halaman awal Perlihatkan sampul album pada layar kunci - Unduh otomatis gambar-gambar artis + Unduh otomatis gambar-gambar artis Buramkan sampul album Notifikasi berwarna Abaikan sampul-sampul dari \'Media Store\' android. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0aecf05c..3e767bc9 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -122,7 +122,7 @@ Scorciatoie app colorate Pagina iniziale Mostra copertina album nella schermata di blocco - Scarica automaticamente le immagini degli artisti + Scarica automaticamente le immagini degli artisti Sfoca la copertina Notifica colorata Ignora le copertine del Media Store diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 2cf98310..493ffb12 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -116,7 +116,7 @@ סרגל ניווט צבעוני עמוד פתיחה הצג עטיפת אלבום - הורדה אוטומטית של תמונות האמן + הורדה אוטומטית של תמונות האמן טשטוש עטיפת האלבום התראה צבעונית ניגון ללא מרווחים בין השירים diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 92fcf380..18aad185 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -107,7 +107,7 @@ ナビゲーションバーの彩色設定 起動時の画面 アルバムアートをロック画面に表示する - アーティスト画像の自動ダウンロード + アーティスト画像の自動ダウンロード アルバムアートにぼかし効果をかける 通知コントロールに色を付ける アルバムアートを直接読み込む diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 7d5819c2..16974e7a 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -112,7 +112,7 @@ 내비게이션 바 색상 틴트 시작 화면 앨범 커버 보이기 - 아티스트 이미지 자동 다운로드 + 아티스트 이미지 자동 다운로드 앨범 커버 블러 효과 알림 색상 틴트 미디어 스토어 앨범 커버 무시 diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 69af3765..d15aecc5 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -121,7 +121,7 @@ Gekleurde navigatiebalk Startpagina Toon albumhoes - Download artiesten afbeeldingen + Download artiesten afbeeldingen Vervaag albumhoes Gekleurde notificatie Negeer Mediaopslag illustraties diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 911c5bc1..03850f53 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -117,7 +117,7 @@ Kolorowy pasek nawigacyjny Strona startowa Pokazuj okładki albumów - Automatyczne pobieranie zdjęć wykonawców + Automatyczne pobieranie zdjęć wykonawców Rozmywanie okładki albumu Kolorowy odtwarzacz w pasku powiadomień Ignoruj okładki z Media Store diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1d96a0ca..b398fbd7 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -117,7 +117,7 @@ Barra de navegação colorida Página inicial Visualizar capa do álbum - Baixar as imagens dos artistas automaticamente + Baixar as imagens dos artistas automaticamente Capa de álbum esmaecida Notificação colorida Ignorar capas Media Store diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index baa07cfc..14b722e8 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -117,7 +117,7 @@ Barra de navegação colorida Página Inicial Mostrar capa do álbum - Download automático das imagens dos artistas + Download automático das imagens dos artistas Desfocar capa do álbum Notificação colorida Ignorar capas Media Store diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index aa51342a..f6a7b71e 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -122,7 +122,7 @@ Цветные шорткаты Установить начальную страницу Показывать обложку альбома - Автоматически загружать изображения исполнителей + Автоматически загружать изображения исполнителей "Размытая обложка альбома " Окрашенное уведомление Игнорировать хранилище обложек альбомов diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index fae35676..908e0c74 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -122,7 +122,7 @@ Renkli uygulama kısayolları Başlangıç sayfası Albüm kapağını göster - Sanatçı resimlerini otomatik indir + Sanatçı resimlerini otomatik indir Bulanık albüm kapağı Renkli bildirim Media Store albüm kapağını yoksay diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 0c0a840f..0939de08 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -117,7 +117,7 @@ Кольорова панель навігації Початкова сторінка Показати обкладинку альбому - Автоматично завантажувати зображення виконавців + Автоматично завантажувати зображення виконавців Розмити обкладинку альбому Кольорове сповіщення Ігнорувати обкладинки з Медіасховища. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 4a126c92..6098b351 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -122,7 +122,7 @@ Màu sắc biểu tượng ứng dụng Trang bắt đầu Hiện bìa album - Tự động tải về hình ảnh nghệ sĩ + Tự động tải về hình ảnh nghệ sĩ Làm mờ bìa album Màu thông báo Bỏ qua kho ảnh bìa trong Kho Phương tiện diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e1f629cb..70fcbb8d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -122,7 +122,7 @@ 着色应用快捷方式 起始页 显示专辑封面 - 自动下载艺术家图像 + 自动下载艺术家图像 专辑封面模糊化 启用通知背景着色 忽略媒体储存中的专辑封面 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a3696098..f48416ce 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -123,7 +123,7 @@ 彩色的應用快捷方式 首頁 顯示專輯封面 - 自動下載演出者圖片 + 自動下載演出者圖片 將專輯圖片模糊化 彩色的狀態列 忽略音訊檔內嵌的專輯封面 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54a1dae3..4252d21e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,8 +38,8 @@ Songs Playlists Couldn\u2019t play this song. - Couldn\u2019t find the artists biography. - Couldn\u2019t find the albums wiki. + Couldn\u2019t find a biography entry for this artist. + Couldn\u2019t find a wiki entry for this album. Biography Wiki Audio focus denied. @@ -131,7 +131,7 @@ Colored app shortcuts Start page Show album cover - Auto download meta data + Auto download metadata Blur album cover Colored notification Classic notification design diff --git a/app/src/main/res/xml/pref_images.xml b/app/src/main/res/xml/pref_images.xml index e4c7e127..e5f407af 100644 --- a/app/src/main/res/xml/pref_images.xml +++ b/app/src/main/res/xml/pref_images.xml @@ -16,7 +16,7 @@ android:key="auto_download_images_policy" android:negativeButtonText="@null" android:positiveButtonText="@null" - android:title="@string/pref_title_auto_download_artist_images" /> + android:title="@string/pref_title_auto_download_metadata" /> From 93afb33e0d91c6814e91559c62087c441d476624 Mon Sep 17 00:00:00 2001 From: Eugene Cheung Date: Wed, 5 Jul 2017 12:43:00 -0400 Subject: [PATCH 09/10] Fix for default language --- .../ui/activities/AlbumDetailActivity.java | 10 ++++++---- .../ui/activities/ArtistDetailActivity.java | 16 +++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 48fe52b5..215ca31f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -273,13 +273,15 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements final String wikiContent = lastFmAlbum.getAlbum().getWiki().getContent(); if (wikiContent != null && !wikiContent.trim().isEmpty()) { wiki = Html.fromHtml(wikiContent); - } else if (lang != null) { - // If the "lang" parameter is set and no wiki is given, retry with default language - loadWiki(null); - return; } } + // If the "lang" parameter is set and no wiki is given, retry with default language + if (wiki == null && lang != null) { + loadWiki(null); + return; + } + if (!Util.isAllowedToDownloadMetadata(AlbumDetailActivity.this)) { if (wiki != null) { wikiDialog.setContent(wiki); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index e2807f0f..53443cbd 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -239,16 +239,18 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement public void onResponse(@NonNull Call call, @NonNull Response response) { final LastFmArtist lastFmArtist = response.body(); if (lastFmArtist != null && lastFmArtist.getArtist() != null) { - String bio = lastFmArtist.getArtist().getBio().getContent(); - if (bio != null && !bio.trim().isEmpty()) { - biography = Html.fromHtml(bio); - } else if (lang != null) { - // If the "lang" parameter is set and no biography is given, retry with default language - loadBiography(null); - return; + final String bioContent = lastFmArtist.getArtist().getBio().getContent(); + if (bioContent != null && !bioContent.trim().isEmpty()) { + biography = Html.fromHtml(bioContent); } } + // If the "lang" parameter is set and no biography is given, retry with default language + if (biography == null && lang != null) { + loadBiography(null); + return; + } + if (!Util.isAllowedToDownloadMetadata(ArtistDetailActivity.this)) { if (biography != null) { biographyDialog.setContent(biography); From a251c45f18f4635ebc007041cf363d3eb745d8e4 Mon Sep 17 00:00:00 2001 From: Eugene Cheung Date: Wed, 5 Jul 2017 13:15:50 -0400 Subject: [PATCH 10/10] Fix NPE --- .../kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 215ca31f..28351eea 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -269,7 +269,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Override public void onResponse(@NonNull Call call, @NonNull Response response) { final LastFmAlbum lastFmAlbum = response.body(); - if (lastFmAlbum != null && lastFmAlbum.getAlbum().getWiki() != null) { + if (lastFmAlbum != null && lastFmAlbum.getAlbum() != null && lastFmAlbum.getAlbum().getWiki() != null) { final String wikiContent = lastFmAlbum.getAlbum().getWiki().getContent(); if (wikiContent != null && !wikiContent.trim().isEmpty()) { wiki = Html.fromHtml(wikiContent);