LyricsDialog displays lyrics without timestamps

Refactoring
This commit is contained in:
tkashkin 2017-07-08 16:29:50 +03:00
commit c047ea96a7
7 changed files with 142 additions and 112 deletions

View file

@ -20,6 +20,7 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper;
import com.kabouzeid.gramophone.misc.SimpleAnimatorListener;
import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.ViewUtil;
@ -42,7 +43,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
ImageView favoriteIcon;
@BindView(R.id.player_lyrics)
FrameLayout lyrics;
FrameLayout lyricsLayout;
@BindView(R.id.player_lyrics_line1)
TextView lyricsLine1;
@BindView(R.id.player_lyrics_line2)
@ -51,7 +52,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
private Callbacks callbacks;
private int currentPosition;
private AbsSynchronizedLyrics synchronizedLyrics;
private Lyrics lyrics;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
@Override
@ -181,18 +182,18 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
.start();
}
public void setSynchronizedLyrics(AbsSynchronizedLyrics sLyrics) {
if (sLyrics == null || sLyrics.lines.size() == 0) {
synchronizedLyrics = null;
lyrics.setVisibility(View.GONE);
public void setLyrics(Lyrics l) {
if (l == null || !l.isSynchronized() || !l.isValid()) {
lyrics = null;
lyricsLayout.setVisibility(View.GONE);
lyricsLine1.setText(null);
lyricsLine2.setText(null);
return;
}
synchronizedLyrics = sLyrics;
lyrics = l;
lyrics.setVisibility(View.VISIBLE);
lyricsLayout.setVisibility(View.VISIBLE);
}
private void notifyColorChange(int color) {
@ -205,14 +206,17 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
@Override
public void onUpdateProgressViews(int progress, int total) {
if (synchronizedLyrics == null || synchronizedLyrics.lines.size() == 0 || !PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow()) {
lyrics.setVisibility(View.GONE);
if (lyrics == null || !lyrics.isSynchronized() || !lyrics.isValid() || !PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow()) {
lyricsLayout.setVisibility(View.GONE);
lyricsLine1.setText(null);
lyricsLine2.setText(null);
return;
}
lyrics.setVisibility(View.VISIBLE);
if (!(lyrics instanceof AbsSynchronizedLyrics)) return;
AbsSynchronizedLyrics synchronizedLyrics = (AbsSynchronizedLyrics) lyrics;
lyricsLayout.setVisibility(View.VISIBLE);
String oldLine = lyricsLine2.getText().toString();
String line = synchronizedLyrics.getLine(progress);

View file

@ -42,7 +42,7 @@ import com.kabouzeid.gramophone.dialogs.SongShareDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment;
import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment;
@ -89,7 +89,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private AsyncTask updateIsFavoriteTask;
private AsyncTask updateLyricsAsyncTask;
private LyricsDialog.LyricInfo lyricsInfo;
private Lyrics lyrics;
private Impl impl;
@ -236,8 +236,8 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_show_lyrics:
if (lyricsInfo != null)
LyricsDialog.create(lyricsInfo).show(getFragmentManager(), "LYRICS");
if (lyrics != null)
LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS");
return true;
}
return super.onMenuItemClick(item);
@ -304,8 +304,8 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
@Override
protected void onPreExecute() {
super.onPreExecute();
lyricsInfo = null;
playerAlbumCoverFragment.setSynchronizedLyrics(null);
lyrics = null;
playerAlbumCoverFragment.setLyrics(null);
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
@ -315,16 +315,15 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
}
@Override
protected void onPostExecute(String lyrics) {
super.onPostExecute(lyrics);
if (TextUtils.isEmpty(lyrics)) {
lyricsInfo = null;
protected void onPostExecute(String data) {
if (TextUtils.isEmpty(data)) {
lyrics = null;
if (toolbar != null) {
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
} else {
lyricsInfo = new LyricsDialog.LyricInfo(song.title, lyrics);
playerAlbumCoverFragment.setSynchronizedLyrics(AbsSynchronizedLyrics.parse(lyrics));
lyrics = Lyrics.parse(song, data);
playerAlbumCoverFragment.setLyrics(lyrics);
Activity activity = getActivity();
if (toolbar != null && activity != null)
if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) {

View file

@ -40,7 +40,7 @@ import com.kabouzeid.gramophone.dialogs.SongShareDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment;
import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment;
@ -86,7 +86,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private AsyncTask updateIsFavoriteTask;
private AsyncTask updateLyricsAsyncTask;
private LyricsDialog.LyricInfo lyricsInfo;
private Lyrics lyrics;
private Impl impl;
@ -232,8 +232,8 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_show_lyrics:
if (lyricsInfo != null)
LyricsDialog.create(lyricsInfo).show(getFragmentManager(), "LYRICS");
if (lyrics != null)
LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS");
return true;
}
return super.onMenuItemClick(item);
@ -300,8 +300,8 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
@Override
protected void onPreExecute() {
super.onPreExecute();
lyricsInfo = null;
playerAlbumCoverFragment.setSynchronizedLyrics(null);
lyrics = null;
playerAlbumCoverFragment.setLyrics(null);
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
@ -311,16 +311,15 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
}
@Override
protected void onPostExecute(String lyrics) {
super.onPostExecute(lyrics);
if (TextUtils.isEmpty(lyrics)) {
lyricsInfo = null;
protected void onPostExecute(String data) {
if (TextUtils.isEmpty(data)) {
lyrics = null;
if (toolbar != null) {
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
} else {
lyricsInfo = new LyricsDialog.LyricInfo(song.title, lyrics);
playerAlbumCoverFragment.setSynchronizedLyrics(AbsSynchronizedLyrics.parse(lyrics));
lyrics = Lyrics.parse(song, data);
playerAlbumCoverFragment.setLyrics(lyrics);
Activity activity = getActivity();
if (toolbar != null && activity != null)
if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) {