From d15f056e00089d8a28bd7b605b31700874166b44 Mon Sep 17 00:00:00 2001 From: Materight Date: Wed, 5 Jul 2017 16:47:41 +0200 Subject: [PATCH] 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