Playlists [beta]

This commit is contained in:
Karim Abou Zeid 2015-03-17 15:09:44 +01:00
commit de15a34365
33 changed files with 896 additions and 56 deletions

View file

@ -36,6 +36,7 @@ import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.ArtistViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.PlaylistViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.SongViewFragment;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
@ -261,41 +262,11 @@ public class MainActivity extends AbsFabActivity
super.onBackPressed();
}
public static class PlaceholderFragmentAbs extends AbsMainActivityFragment {
public PlaceholderFragmentAbs() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_place_holder, container, false);
TextView text = (TextView) rootView.findViewById(R.id.text);
text.setText("Coming soon!");
return rootView;
}
@Override
public void enableViews() {
}
@Override
public void disableViews() {
}
@Override
public boolean areViewsEnabled() {
return false;
}
}
private class MainActivityViewPagerAdapter extends FragmentPagerAdapter {
private String[] titles;
private SparseArray<AbsMainActivityFragment> pages; //TODO check if this must be static
private SparseArray<AbsMainActivityFragment> pages;
private Context context;
public MainActivityViewPagerAdapter(Activity activity) {
@ -306,7 +277,6 @@ public class MainActivity extends AbsFabActivity
context.getResources().getString(R.string.songs),
context.getResources().getString(R.string.albums),
context.getResources().getString(R.string.artists),
context.getResources().getString(R.string.genres),
context.getResources().getString(R.string.playlists)
};
}
@ -321,11 +291,9 @@ public class MainActivity extends AbsFabActivity
case 2:
return pages.get(position, new ArtistViewFragment());
case 3:
//TODO genres
case 4:
//TODO playlists
return pages.get(position, new PlaylistViewFragment());
}
return pages.get(position, new PlaceholderFragmentAbs());
return null;
}
@Override

View file

@ -0,0 +1,87 @@
package com.kabouzeid.gramophone.ui.activities;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.songadapter.PlaylistSongAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.PlaylistSong;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import java.util.List;
public class PlaylistDetailActivity extends AbsFabActivity {
public static final String TAG = PlaylistDetailActivity.class.getSimpleName();
private RecyclerView recyclerView;
private Playlist playlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
setUpTranslucence(false, false);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_playlist_detail);
getIntentExtras();
setUpToolBar();
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
List<PlaylistSong> songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
PlaylistSongAdapter adapter = new PlaylistSongAdapter(this, songs);
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
recyclerView.setAdapter(adapter);
}
private void getIntentExtras() {
Bundle intentExtras = getIntent().getExtras();
final int playlistId = intentExtras.getInt(AppKeys.E_PLAYLIST);
playlist = PlaylistLoader.getPlaylist(this, playlistId);
if (playlist == null) {
finish();
}
}
private void setUpToolBar() {
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
getSupportActionBar().setTitle(playlist.playlistName);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public String getTag() {
return TAG;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_playlist_detail, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
super.onBackPressed();
return true;
case R.id.action_settings:
return true;
case R.id.action_current_playing:
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(null));
return true;
case R.id.action_playing_queue:
NavigationUtil.openPlayingQueueDialog(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}

View file

@ -138,7 +138,6 @@ public class NavigationDrawerFragment extends Fragment {
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.songs), R.drawable.ic_my_library_music_white_24dp));
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.albums), R.drawable.ic_album_white_24dp));
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.artists), R.drawable.ic_person_white_24dp));
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.genres), R.drawable.ic_my_library_music_white_24dp));
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.playlists), R.drawable.ic_queue_music_white_24dp));
drawerAdapter = new NavigationDrawerItemAdapter(getActivity(), R.id.navigation_drawer, navigationDrawerItems);

View file

@ -0,0 +1,59 @@
package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
import android.os.Bundle;
import android.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlaylistAdapter;
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
import java.util.List;
public class PlaylistViewFragment extends AbsMainActivityFragment {
public static final String TAG = PlaylistViewFragment.class.getSimpleName();
private RecyclerView recyclerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_playlist_view, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
setUpRecyclerView();
}
private void setUpRecyclerView() {
List<Playlist> playlists = PlaylistLoader.getAllPlaylists(getActivity());
PlaylistAdapter adapter = new PlaylistAdapter(getActivity(), playlists);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
recyclerView.setAdapter(adapter);
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
}
@Override
public void enableViews() {
super.enableViews();
recyclerView.setEnabled(true);
}
@Override
public void disableViews() {
super.disableViews();
recyclerView.setEnabled(false);
}
}