Massive adapter clean up. Lots of stuff unfinished there yet. Don't mess around with it yet.

This commit is contained in:
Karim Abou Zeid 2015-07-13 02:16:26 +02:00
commit 0650df6250
35 changed files with 847 additions and 1438 deletions

View file

@ -38,7 +38,6 @@ import com.kabouzeid.gramophone.loader.AlbumSongLoader;
import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
import com.kabouzeid.gramophone.misc.SmallTransitionListener;
import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
@ -325,7 +324,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
private void setUpSongsAdapter() {
songs = AlbumSongLoader.getAlbumSongList(this, album.id);
adapter = new AlbumSongAdapter(this, songs, this);
adapter = new AlbumSongAdapter(this, songs, R.layout.item_list, this);
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
recyclerView.setAdapter(adapter);
}
@ -394,19 +393,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
}
}
@Subscribe
public void onDataBaseEvent(@NonNull DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.SONGS_CHANGED:
case DataBaseChangedEvent.ALBUMS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
songs = AlbumSongLoader.getAlbumSongList(this, album.id);
adapter.updateDataSet(songs);
if (songs.size() < 1) finish();
break;
}
}
@Subscribe
public void onUIPreferenceChanged(@NonNull UIPreferenceChangedEvent event) {
switch (event.getAction()) {

View file

@ -33,7 +33,7 @@ import com.afollestad.materialdialogs.util.DialogUtils;
import com.github.ksoichiro.android.observablescrollview.ObservableListView;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.ArtistAlbumAdapter;
import com.kabouzeid.gramophone.adapter.album.HorizontalAlbumAdapter;
import com.kabouzeid.gramophone.adapter.song.ArtistSongAdapter;
import com.kabouzeid.gramophone.dialogs.SleepTimerDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
@ -51,7 +51,6 @@ import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
import com.kabouzeid.gramophone.misc.SmallTransitionListener;
import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.Artist;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
@ -116,7 +115,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
private Artist artist;
@Nullable
private Spanned biography;
private ArtistAlbumAdapter albumAdapter;
private HorizontalAlbumAdapter albumAdapter;
private ArtistSongAdapter songAdapter;
private ArrayList<Song> songs;
private ArrayList<Album> albums;
@ -278,7 +277,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
private void setUpAlbumRecyclerView() {
albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
albums = ArtistAlbumLoader.getArtistAlbumList(this, artist.id);
albumAdapter = new ArtistAlbumAdapter(this, albums, this);
albumAdapter = new HorizontalAlbumAdapter(this, albums, this);
albumRecyclerView.setAdapter(albumAdapter);
}
@ -551,22 +550,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
});
}
@Subscribe
public void onDataBaseEvent(@NonNull DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.SONGS_CHANGED:
case DataBaseChangedEvent.ALBUMS_CHANGED:
case DataBaseChangedEvent.ARTISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
songs = ArtistSongLoader.getArtistSongList(this, artist.id);
songAdapter.updateDataSet(songs);
albums = ArtistAlbumLoader.getArtistAlbumList(this, artist.id);
albumAdapter.updateDataSet(albums);
if (songs.size() < 1) finish();
break;
}
}
@Subscribe
public void onUIPreferenceChanged(@NonNull UIPreferenceChangedEvent event) {
switch (event.getAction()) {

View file

@ -13,19 +13,21 @@ import android.widget.TextView;
import com.afollestad.materialcab.MaterialCab;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.AbsPlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.SmartPlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.SongAdapter;
import com.kabouzeid.gramophone.dialogs.SleepTimerDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.DragSortRecycler;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.squareup.otto.Subscribe;
import butterknife.ButterKnife;
import butterknife.InjectView;
@ -46,7 +48,7 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
private Playlist playlist;
private MaterialCab cab;
private AbsPlaylistSongAdapter adapter;
private SongAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -72,16 +74,22 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
private void setUpRecyclerView() {
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
if (playlist instanceof AbsSmartPlaylist) {
adapter = ((AbsSmartPlaylist) playlist).createAdapter(this, this);
adapter = new SmartPlaylistSongAdapter(this, ((AbsSmartPlaylist) playlist).getSongs(this), R.layout.item_list, this);
} else {
adapter = new PlaylistSongAdapter(this, playlist, this);
adapter = new PlaylistSongAdapter(this, PlaylistSongLoader.getPlaylistSongList(this, playlist.id), R.layout.item_list, this);
DragSortRecycler dragSortRecycler = new DragSortRecycler();
dragSortRecycler.setViewHandleId(R.id.image);
dragSortRecycler.setOnItemMovedListener(new DragSortRecycler.OnItemMovedListener() {
@Override
public void onItemMoved(int from, int to) {
((PlaylistSongAdapter) adapter).moveItem(from, to);
if (from == to) return;
if (PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, from, to)) {
Song song = adapter.getDataSet().remove(from);
adapter.getDataSet().add(to, song);
adapter.notifyItemMoved(from, to);
}
}
});
@ -133,7 +141,6 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
new SleepTimerDialog().show(getSupportFragmentManager(), "SET_SLEEP_TIMER");
return true;
case R.id.action_shuffle_playlist:
//noinspection unchecked
MusicPlayerRemote.openAndShuffleQueue(this, adapter.getDataSet(), true);
return true;
case R.id.action_equalizer:
@ -169,17 +176,6 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
App.bus.unregister(this);
}
@Subscribe
public void onDataBaseEvent(@NonNull DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.PLAYLISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
adapter.updateDataSet();
checkIsEmpty();
break;
}
}
@Override
public void onBackPressed() {
if (cab != null && cab.isActive()) cab.finish();

View file

@ -5,7 +5,8 @@ import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.AlbumAdapter;
import com.kabouzeid.gramophone.adapter.album.AlbumAdapter;
import com.kabouzeid.gramophone.loader.AlbumLoader;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
@ -27,7 +28,7 @@ public class AlbumViewFragment extends AbsMainActivityRecyclerViewFragment {
@NonNull
@Override
protected RecyclerView.Adapter createAdapter() {
return new AlbumAdapter(getMainActivity(), getMainActivity());
return new AlbumAdapter(getMainActivity(), AlbumLoader.getAllAlbums(getActivity()), R.layout.item_grid, getMainActivity());
}
@Override

View file

@ -5,7 +5,8 @@ import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.artist.ArtistListAdapter;
import com.kabouzeid.gramophone.adapter.artist.ArtistAdapter;
import com.kabouzeid.gramophone.loader.ArtistLoader;
/**
* @author Karim Abou Zeid (kabouzeid)
@ -17,13 +18,17 @@ public class ArtistViewFragment extends AbsMainActivityRecyclerViewFragment {
@NonNull
@Override
protected RecyclerView.LayoutManager createLayoutManager() {
return new GridLayoutManager(getActivity(), 1);
return new GridLayoutManager(getActivity(), 2);
}
@NonNull
@Override
protected RecyclerView.Adapter createAdapter() {
return new ArtistListAdapter(getMainActivity(), getMainActivity());
return new ArtistAdapter(
getMainActivity(),
ArtistLoader.getAllArtists(getActivity()),
R.layout.item_grid,
getMainActivity());
}
@Override

View file

@ -6,6 +6,13 @@ import android.support.v7.widget.RecyclerView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlaylistAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.smartplaylist.LastAddedPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.MyTopTracksPlaylist;
import com.kabouzeid.gramophone.model.smartplaylist.RecentlyPlayedPlaylist;
import java.util.ArrayList;
/**
* @author Karim Abou Zeid (kabouzeid)
@ -23,7 +30,15 @@ public class PlaylistViewFragment extends AbsMainActivityRecyclerViewFragment {
@NonNull
@Override
protected RecyclerView.Adapter createAdapter() {
return new PlaylistAdapter(getMainActivity(), getMainActivity());
ArrayList<Playlist> playlists = new ArrayList<>();
playlists.add(new LastAddedPlaylist(getActivity()));
playlists.add(new RecentlyPlayedPlaylist(getActivity()));
playlists.add(new MyTopTracksPlaylist(getActivity()));
playlists.addAll(PlaylistLoader.getAllPlaylists(getActivity()));
return new PlaylistAdapter(getMainActivity(), playlists, R.layout.item_list_single_row, getMainActivity());
}
@Override

View file

@ -6,6 +6,7 @@ import android.support.v7.widget.RecyclerView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.SongAdapter;
import com.kabouzeid.gramophone.loader.SongLoader;
/**
* @author Karim Abou Zeid (kabouzeid)
@ -23,7 +24,7 @@ public class SongViewFragment extends AbsMainActivityRecyclerViewFragment {
@NonNull
@Override
protected RecyclerView.Adapter createAdapter() {
return new SongAdapter(getMainActivity(), getMainActivity());
return new SongAdapter(getMainActivity(), SongLoader.getAllSongs(getActivity()), R.layout.item_list, getMainActivity());
}
@Override