Code rearrange and delete songs

This commit is contained in:
Karim Abou Zeid 2015-03-23 22:40:51 +01:00
commit 00e3724ab4
15 changed files with 223 additions and 91 deletions

View file

@ -12,13 +12,17 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.AlbumLoader;
import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil; import com.kabouzeid.gramophone.util.ViewUtil;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Callback; import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
@ -103,11 +107,15 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
} }
} }
public AlbumAdapter(Activity activity, List<Album> objects) { public AlbumAdapter(Activity activity) {
this.activity = activity; this.activity = activity;
dataSet = objects; //TODO shared prefs
usePalette = true; usePalette = true;
loadDataSet();
}
private void loadDataSet() {
dataSet = AlbumLoader.getAllAlbums(activity);
} }
private void applyPalette(Bitmap bitmap, final TextView title, final TextView artist, final View footer) { private void applyPalette(Bitmap bitmap, final TextView title, final TextView artist, final View footer) {
@ -139,4 +147,27 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
int defaultBarColor = activity.getResources().getColor(R.color.materialmusic_default_bar_color); int defaultBarColor = activity.getResources().getColor(R.color.materialmusic_default_bar_color);
footer.setBackgroundColor(defaultBarColor); footer.setBackgroundColor(defaultBarColor);
} }
@Override
public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
App.bus.unregister(this);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
App.bus.register(this);
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.ALBUMS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
loadDataSet();
notifyDataSetChanged();
break;
}
}
} }

View file

@ -9,11 +9,15 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistThumbnailUrlLoader; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistThumbnailUrlLoader;
import com.kabouzeid.gramophone.loader.ArtistLoader;
import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Artist;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.util.List; import java.util.List;
@ -25,9 +29,13 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
protected Activity activity; protected Activity activity;
protected List<Artist> dataSet; protected List<Artist> dataSet;
public ArtistAdapter(Activity activity, List<Artist> objects) { public ArtistAdapter(Activity activity) {
this.activity = activity; this.activity = activity;
dataSet = objects; loadDataSet();
}
private void loadDataSet() {
dataSet = ArtistLoader.getAllArtists(activity);
} }
@Override @Override
@ -84,4 +92,27 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
NavigationUtil.goToArtist(activity, dataSet.get(getPosition()).id, artistPairs); NavigationUtil.goToArtist(activity, dataSet.get(getPosition()).id, artistPairs);
} }
} }
@Override
public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
App.bus.unregister(this);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
App.bus.register(this);
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.ARTISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
loadDataSet();
notifyDataSetChanged();
break;
}
}
} }

View file

@ -11,12 +11,16 @@ import android.widget.ImageView;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.DeletePlaylistDialogHelper; import com.kabouzeid.gramophone.helper.DeletePlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.RenamePlaylistDialogHelper; import com.kabouzeid.gramophone.helper.RenamePlaylistDialogHelper;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.squareup.otto.Subscribe;
import java.util.List; import java.util.List;
@ -28,9 +32,13 @@ public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHo
protected Activity activity; protected Activity activity;
protected List<Playlist> dataSet; protected List<Playlist> dataSet;
public PlaylistAdapter(Activity activity, List<Playlist> objects) { public PlaylistAdapter(Activity activity) {
this.activity = activity; this.activity = activity;
dataSet = objects; loadDataSet();
}
private void loadDataSet() {
dataSet = PlaylistLoader.getAllPlaylists(activity);
} }
@Override @Override
@ -90,4 +98,27 @@ public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHo
NavigationUtil.goToPlaylist(activity, dataSet.get(getAdapterPosition()).id, sharedViews); NavigationUtil.goToPlaylist(activity, dataSet.get(getAdapterPosition()).id, sharedViews);
} }
} }
@Override
public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
App.bus.unregister(this);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
App.bus.register(this);
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.PLAYLISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
loadDataSet();
notifyDataSetChanged();
break;
}
}
} }

View file

@ -11,19 +11,23 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper; import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.DeleteSongsDialogHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader; import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.io.File; import java.io.File;
@ -37,9 +41,13 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
protected Activity activity; protected Activity activity;
protected List<Song> dataSet; protected List<Song> dataSet;
public SongAdapter(Activity activity, List<Song> objects) { public SongAdapter(Activity activity) {
this.activity = activity; this.activity = activity;
dataSet = objects; loadDataSet();
}
private void loadDataSet() {
dataSet = SongLoader.getAllSongs(activity);
} }
@Override @Override
@ -96,24 +104,24 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.action_delete_from_disk: case R.id.action_delete_from_disk:
Toast.makeText(activity, "This feature is not available yet", Toast.LENGTH_SHORT).show(); DeleteSongsDialogHelper.getDialog(activity, dataSet.get(getAdapterPosition())).show();
return true; return true;
case R.id.action_add_to_playlist: case R.id.action_add_to_playlist:
AddToPlaylistDialogHelper.getDialog(activity, dataSet.get(getAdapterPosition())).show(); AddToPlaylistDialogHelper.getDialog(activity, dataSet.get(getAdapterPosition())).show();
return true; return true;
case R.id.action_play_next: case R.id.action_play_next:
MusicPlayerRemote.playNext(dataSet.get(getPosition())); MusicPlayerRemote.playNext(dataSet.get(getAdapterPosition()));
return true; return true;
case R.id.action_add_to_current_playing: case R.id.action_add_to_current_playing:
MusicPlayerRemote.enqueue(dataSet.get(getPosition())); MusicPlayerRemote.enqueue(dataSet.get(getAdapterPosition()));
return true; return true;
case R.id.action_tag_editor: case R.id.action_tag_editor:
Intent intent = new Intent(activity, SongTagEditorActivity.class); Intent intent = new Intent(activity, SongTagEditorActivity.class);
intent.putExtra(AppKeys.E_ID, dataSet.get(getPosition()).id); intent.putExtra(AppKeys.E_ID, dataSet.get(getAdapterPosition()).id);
activity.startActivity(intent); activity.startActivity(intent);
return true; return true;
case R.id.action_details: case R.id.action_details:
String songFilePath = SongFilePathLoader.getSongFilePath(activity, dataSet.get(getPosition()).id); String songFilePath = SongFilePathLoader.getSongFilePath(activity, dataSet.get(getAdapterPosition()).id);
File songFile = new File(songFilePath); File songFile = new File(songFilePath);
SongDetailDialogHelper.getDialog(activity, songFile).show(); SongDetailDialogHelper.getDialog(activity, songFile).show();
return true; return true;
@ -123,13 +131,13 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
}; };
if (activity instanceof AbsFabActivity) if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs); albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getPosition()).albumId, albumPairs); NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).albumId, albumPairs);
return true; return true;
case R.id.action_go_to_artist: case R.id.action_go_to_artist:
Pair[] artistPairs = null; Pair[] artistPairs = null;
if (activity instanceof AbsFabActivity) if (activity instanceof AbsFabActivity)
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs); artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs);
NavigationUtil.goToArtist(activity, dataSet.get(getPosition()).artistId, artistPairs); NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).artistId, artistPairs);
return true; return true;
} }
return false; return false;
@ -138,4 +146,27 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
popupMenu.show(); popupMenu.show();
} }
} }
@Override
public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
App.bus.unregister(this);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
App.bus.register(this);
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.SONGS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
loadDataSet();
notifyDataSetChanged();
break;
}
}
} }

View file

@ -0,0 +1,46 @@
package com.kabouzeid.gramophone.helper;
import android.content.Context;
import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.MusicUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by karim on 23.03.15.
*/
public class DeleteSongsDialogHelper {
public static MaterialDialog getDialog(final Context context, final Song song) {
List<Song> tmpList = new ArrayList<>();
tmpList.add(song);
return getDialog(context, tmpList);
}
public static MaterialDialog getDialog(final Context context, final List<Song> songs) {
String title = context.getResources().getString(R.string.delete_songs_1);
title = songs.size() > 1 ? title + songs.size() + context.getResources().getString(R.string.delete_songs_2) : title + songs.get(0).title + "?";
return new MaterialDialog.Builder(context)
.title(title)
.content(context.getResources().getString(R.string.delete_warning))
.positiveText(context.getResources().getString(R.string.ok))
.negativeText(context.getResources().getString(R.string.cancel))
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
super.onPositive(dialog);
dialog.dismiss();
MusicUtil.deleteTracks(context, songs);
}
@Override
public void onNegative(MaterialDialog dialog) {
super.onNegative(dialog);
dialog.dismiss();
}
}).build();
}
}

View file

@ -500,11 +500,14 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
} }
public void removeSong(Song song) { public void removeSong(Song song) {
while (playingQueue.contains(song)){ for (int i = 0; i < playingQueue.size(); i++) {
playingQueue.remove(song); if (playingQueue.get(i).id == song.id) playingQueue.remove(i);
} }
while (originalPlayingQueue.contains(song)){ for (int i = 0; i < originalPlayingQueue.size(); i++) {
originalPlayingQueue.remove(song); if (originalPlayingQueue.get(i).id == song.id) originalPlayingQueue.remove(i);
}
if (song.id == currentSongId) {
playSong();
} }
saveState(); saveState();
} }

View file

@ -33,8 +33,11 @@ public abstract class AbsFabActivity extends AbsBaseActivity {
@Override @Override
protected void onPostCreate(Bundle savedInstanceState) { protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
setUpFab(); try {
App.bus.register(busEventListener); App.bus.register(busEventListener);
} catch (Exception ignored) {
}
setUpFab();
} }
private void setUpFab() { private void setUpFab() {
@ -137,7 +140,10 @@ public abstract class AbsFabActivity extends AbsBaseActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
try {
App.bus.unregister(busEventListener); App.bus.unregister(busEventListener);
} catch (Exception ignored) {
}
} }
public void onMusicRemoteEvent(MusicRemoteEvent event) { public void onMusicRemoteEvent(MusicRemoteEvent event) {

View file

@ -2,9 +2,7 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
import android.app.Fragment; import android.app.Fragment;
import android.os.Build; import android.os.Build;
import android.view.ViewConfiguration;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.ui.activities.MainActivity; import com.kabouzeid.gramophone.ui.activities.MainActivity;

View file

@ -9,10 +9,6 @@ import android.view.ViewGroup;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.AlbumAdapter; import com.kabouzeid.gramophone.adapter.AlbumAdapter;
import com.kabouzeid.gramophone.loader.AlbumLoader;
import com.kabouzeid.gramophone.model.Album;
import java.util.List;
/** /**
* Created by karim on 22.11.14. * Created by karim on 22.11.14.
@ -35,12 +31,9 @@ public class AlbumViewFragment extends AbsMainActivityFragment {
} }
private void setUpRecyclerView() { private void setUpRecyclerView() {
List<Album> albums = AlbumLoader.getAllAlbums(getActivity());
AlbumAdapter albumAdapter = new AlbumAdapter(getActivity(), albums);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2)); recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
recyclerView.setAdapter(albumAdapter);
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
recyclerView.setAdapter(new AlbumAdapter(getActivity()));
} }
@Override @Override

View file

@ -10,10 +10,6 @@ import android.view.ViewGroup;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.ArtistAdapter; import com.kabouzeid.gramophone.adapter.ArtistAdapter;
import com.kabouzeid.gramophone.loader.ArtistLoader;
import com.kabouzeid.gramophone.model.Artist;
import java.util.List;
public class ArtistViewFragment extends AbsMainActivityFragment { public class ArtistViewFragment extends AbsMainActivityFragment {
public static final String TAG = ArtistViewFragment.class.getSimpleName(); public static final String TAG = ArtistViewFragment.class.getSimpleName();
@ -33,12 +29,9 @@ public class ArtistViewFragment extends AbsMainActivityFragment {
} }
private void setUpRecyclerView() { private void setUpRecyclerView() {
List<Artist> artists = ArtistLoader.getAllArtists(getActivity());
ArtistAdapter artistAdapter = new ArtistAdapter(getActivity(), artists);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1)); recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
recyclerView.setAdapter(artistAdapter);
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
recyclerView.setAdapter(new ArtistAdapter(getActivity()));
} }
@Override @Override

View file

@ -8,15 +8,8 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlaylistAdapter; import com.kabouzeid.gramophone.adapter.PlaylistAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Playlist;
import com.squareup.otto.Subscribe;
import java.util.List;
public class PlaylistViewFragment extends AbsMainActivityFragment { public class PlaylistViewFragment extends AbsMainActivityFragment {
public static final String TAG = PlaylistViewFragment.class.getSimpleName(); public static final String TAG = PlaylistViewFragment.class.getSimpleName();
@ -43,22 +36,11 @@ public class PlaylistViewFragment extends AbsMainActivityFragment {
private void setUpAdapter() { private void setUpAdapter() {
if (recyclerView != null) { if (recyclerView != null) {
List<Playlist> playlists = PlaylistLoader.getAllPlaylists(getActivity()); PlaylistAdapter adapter = new PlaylistAdapter(getActivity());
PlaylistAdapter adapter = new PlaylistAdapter(getActivity(), playlists);
recyclerView.setAdapter(adapter); recyclerView.setAdapter(adapter);
} }
} }
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.PLAYLISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
setUpAdapter();
break;
}
}
@Override @Override
public void enableViews() { public void enableViews() {
super.enableViews(); super.enableViews();
@ -70,16 +52,4 @@ public class PlaylistViewFragment extends AbsMainActivityFragment {
super.disableViews(); super.disableViews();
recyclerView.setEnabled(false); recyclerView.setEnabled(false);
} }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
App.bus.register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
App.bus.unregister(this);
}
} }

View file

@ -9,10 +9,6 @@ import android.view.ViewGroup;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.model.Song;
import java.util.List;
/** /**
* Created by karim on 29.12.14. * Created by karim on 29.12.14.
@ -35,12 +31,9 @@ public class SongViewFragment extends AbsMainActivityFragment {
} }
private void setUpRecyclerView() { private void setUpRecyclerView() {
List<Song> songs = SongLoader.getAllSongs(getActivity());
SongAdapter songAdapter = new SongAdapter(getActivity(), songs);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1)); recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
recyclerView.setAdapter(songAdapter);
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
recyclerView.setAdapter(new SongAdapter(getActivity()));
} }
@Override @Override

View file

@ -7,18 +7,18 @@ import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Environment; import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import java.io.File; import java.io.File;
import java.io.FileDescriptor;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@ -120,6 +120,7 @@ public class MusicUtil {
final int id = cursor.getInt(0); final int id = cursor.getInt(0);
final Song song = SongLoader.getSong(context, id); final Song song = SongLoader.getSong(context, id);
MusicPlayerRemote.removeFromQueue(song); MusicPlayerRemote.removeFromQueue(song);
cursor.moveToNext();
} }
// Step 2: Remove selected tracks from the database // Step 2: Remove selected tracks from the database
@ -147,5 +148,6 @@ public class MusicUtil {
context.getContentResolver().notifyChange(Uri.parse("content://media"), null); context.getContentResolver().notifyChange(Uri.parse("content://media"), null);
Toast.makeText(context, "Deleted " + songs.size() + " songs", Toast.LENGTH_SHORT).show(); Toast.makeText(context, "Deleted " + songs.size() + " songs", Toast.LENGTH_SHORT).show();
//TODO add resource string //TODO add resource string
App.bus.post(new DataBaseChangedEvent(DataBaseChangedEvent.SONGS_CHANGED));
} }
} }

View file

@ -7,6 +7,7 @@
android:foreground="?rect_selector"> android:foreground="?rect_selector">
<LinearLayout <LinearLayout
android:background="@color/materialmusic_default_bar_color"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">

View file

@ -85,5 +85,8 @@
<string name="create_playlist_failed">Could not create playlist\u0020</string> <string name="create_playlist_failed">Could not create playlist\u0020</string>
<string name="delete_playlist">Delete playlist\u0020</string> <string name="delete_playlist">Delete playlist\u0020</string>
<string name="rename_playlist">Rename playlist\u0020</string> <string name="rename_playlist">Rename playlist\u0020</string>
<string name="delete_songs_1">Delete\u0020</string>
<string name="delete_songs_2">\u0020songs?</string>
<string name="delete_warning">"Warning: This operation can not be undone."</string>
</resources> </resources>