Added multi select everywhere else and auto updates every activity after the music database changed. Fix issue #4
This commit is contained in:
parent
f033819620
commit
3067d6d637
15 changed files with 380 additions and 76 deletions
|
|
@ -30,6 +30,7 @@ import com.kabouzeid.gramophone.loader.AlbumSongLoader;
|
|||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
|
||||
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;
|
||||
|
|
@ -60,6 +61,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
private Album album;
|
||||
|
||||
private ObservableRecyclerView recyclerView;
|
||||
private AlbumSongAdapter adapter;
|
||||
private ArrayList<Song> songs;
|
||||
private View statusBar;
|
||||
private ImageView albumArtImageView;
|
||||
private View songsBackgroundView;
|
||||
|
|
@ -281,10 +284,10 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
}
|
||||
|
||||
private void setUpSongsAdapter() {
|
||||
final ArrayList<Song> songs = AlbumSongLoader.getAlbumSongList(this, album.id);
|
||||
final AlbumSongAdapter albumSongAdapter = new AlbumSongAdapter(this, songs, this);
|
||||
songs = AlbumSongLoader.getAlbumSongList(this, album.id);
|
||||
adapter = new AlbumSongAdapter(this, songs, this);
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
recyclerView.setAdapter(albumSongAdapter);
|
||||
recyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -348,6 +351,19 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDataBaseEvent(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(UIPreferenceChangedEvent event) {
|
||||
switch (event.getAction()) {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import com.kabouzeid.gramophone.misc.AppKeys;
|
|||
import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
|
||||
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;
|
||||
|
|
@ -56,7 +57,6 @@ import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListene
|
|||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A lot of hackery is done in this activity. Changing things may will brake the whole activity.
|
||||
|
|
@ -86,6 +86,9 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
private RecyclerView albumRecyclerView;
|
||||
private Spanned biography;
|
||||
private ArtistAlbumAdapter albumAdapter;
|
||||
private ArtistSongAdapter songAdapter;
|
||||
private ArrayList<Song> songs;
|
||||
private ArrayList<Album> albums;
|
||||
|
||||
private final SmallObservableScrollViewCallbacks observableScrollViewCallbacks = new SmallObservableScrollViewCallbacks() {
|
||||
@Override
|
||||
|
|
@ -211,8 +214,8 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
songListView.setPadding(0, artistImageViewHeight + titleViewHeight, 0, bottomOffset);
|
||||
songListView.addHeaderView(songListHeader);
|
||||
|
||||
final ArrayList<Song> songs = ArtistSongLoader.getArtistSongList(this, artist.id);
|
||||
ArtistSongAdapter songAdapter = new ArtistSongAdapter(this, songs, this);
|
||||
songs = ArtistSongLoader.getArtistSongList(this, artist.id);
|
||||
songAdapter = new ArtistSongAdapter(this, songs, this);
|
||||
songListView.setAdapter(songAdapter);
|
||||
|
||||
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
|
|
@ -227,7 +230,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
|
||||
private void setUpAlbumRecyclerView() {
|
||||
albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
|
||||
List<Album> albums = ArtistAlbumLoader.getArtistAlbumList(this, artist.id);
|
||||
albums = ArtistAlbumLoader.getArtistAlbumList(this, artist.id);
|
||||
albumAdapter = new ArtistAlbumAdapter(this, albums, this);
|
||||
albumRecyclerView.setAdapter(albumAdapter);
|
||||
}
|
||||
|
|
@ -431,6 +434,22 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDataBaseEvent(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(UIPreferenceChangedEvent event) {
|
||||
switch (event.getAction()) {
|
||||
|
|
|
|||
|
|
@ -10,12 +10,16 @@ import android.view.Menu;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import com.afollestad.materialcab.MaterialCab;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.songadapter.PlaylistSongAdapter;
|
||||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistLoader;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.misc.DragSortRecycler;
|
||||
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.PlaylistSong;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
|
||||
|
|
@ -23,13 +27,17 @@ import com.kabouzeid.gramophone.util.NavigationUtil;
|
|||
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PlaylistDetailActivity extends AbsFabActivity {
|
||||
public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder {
|
||||
|
||||
public static final String TAG = PlaylistDetailActivity.class.getSimpleName();
|
||||
private Playlist playlist;
|
||||
private MaterialCab cab;
|
||||
private PlaylistSongAdapter adapter;
|
||||
private ArrayList<PlaylistSong> songs;
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
|
|
@ -41,8 +49,8 @@ public class PlaylistDetailActivity extends AbsFabActivity {
|
|||
getIntentExtras();
|
||||
|
||||
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
|
||||
final ArrayList<PlaylistSong> songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
|
||||
final PlaylistSongAdapter adapter = new PlaylistSongAdapter(this, songs);
|
||||
songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
|
||||
adapter = new PlaylistSongAdapter(this, songs, this);
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
|
|
@ -72,6 +80,8 @@ public class PlaylistDetailActivity extends AbsFabActivity {
|
|||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setTitle(playlist.name);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
App.bus.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -123,4 +133,34 @@ public class PlaylistDetailActivity extends AbsFabActivity {
|
|||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialCab openCab(final int menu, final MaterialCab.Callback callback) {
|
||||
if (cab != null && cab.isActive()) cab.finish();
|
||||
cab = new MaterialCab(this, R.id.cab_stub)
|
||||
.setMenu(menu)
|
||||
.setBackgroundColor(PreferenceUtils.getInstance(this).getThemeColorPrimary())
|
||||
.start(callback);
|
||||
return cab;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
App.bus.unregister(this);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDataBaseEvent(DataBaseChangedEvent event) {
|
||||
switch (event.getAction()) {
|
||||
case DataBaseChangedEvent.PLAYLISTS_CHANGED:
|
||||
case DataBaseChangedEvent.DATABASE_CHANGED:
|
||||
songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
|
||||
adapter.updateDataSet(songs);
|
||||
findViewById(android.R.id.empty).setVisibility(
|
||||
songs.size() == 0 ? View.VISIBLE : View.GONE
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue