package com.airplayer.fragment.singleitem; import android.app.Activity; import android.content.Intent; import android.content.Context; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.airplayer.R; import com.airplayer.activity.AirMainActivity; import com.airplayer.activity.fetchpicture.FetchAlbumArtActivity; import com.airplayer.adapter.AirAdapter; import com.airplayer.adapter.SongAdapter; import com.airplayer.model.AirModelSingleton; import com.airplayer.model.Album; import com.airplayer.model.PictureGettable; import com.airplayer.model.Song; import com.airplayer.service.PlayMusicService; import java.util.List; /** * Created by ZiyiTsang on 15/6/14. */ public class AlbumFragment extends SingleItemChildFragment { public static final String TAG = AlbumFragment.class.getSimpleName(); public static final String ALBUM_RECEIVED = "album_received"; private Album mAlbum; private List<Song> mSongList; private PlayMusicService.PlayerControlBinder mBinder; public static AlbumFragment newInstance(Album album) { AlbumFragment fragment = new AlbumFragment(); Bundle args = new Bundle(); args.putSerializable(ALBUM_RECEIVED, album); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAlbum = (Album) getArguments().getSerializable(ALBUM_RECEIVED); mBinder = ((AirMainActivity) getActivity()).getPlayerControlBinder(); mSongList = AirModelSingleton.getInstance(getActivity()).getAlbumSong(mAlbum.getTitle()); } @Override public void setupFab(View rootView) { FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mBinder.playMusic(0, mSongList); } }); } public void setupRecyclerView(RecyclerView recyclerView) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); AlbumSongAdapter adapter = new AlbumSongAdapter(getActivity(), mSongList); adapter.showIconImage(false); adapter.setOnItemClickListener(new AirAdapter.OnItemClickListener() { @Override public void onItemClicked(View view, int position) { mBinder.playMusic(position - 1, mSongList); } }); recyclerView.setAdapter(adapter); } @Override public void setupDraweeView() { mToolbar.setTitle(mAlbum.getTitle()); mDraweeView.setImageURI(mAlbum.getAlbumArtUri()); mDraweeView.setOnClickListener(new OnPictureClickListener(mAlbum, FetchAlbumArtActivity.class) { @Override public void onPictureDelete() { mAlbum.setPictureDownloaded(false); mDraweeView.setImageURI(mAlbum.getAlbumArtUri()); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { if (requestCode == PictureGettable.REQUEST_CODE_FETCH_PICTURE) { mAlbum.setPictureDownloaded(true); mDraweeView.setImageURI(mAlbum.getAlbumArtUri()); } } } @Override public int getRootViewId() { return R.layout.recycler_collapsing_toolbar; } public class AlbumSongAdapter extends SongAdapter { public AlbumSongAdapter(Context context, List<Song> list) { super(context, list); } @Override public AirHeadViewHolder onCreateHeadViewHolder(ViewGroup parent) { return new AlbumSongHeader(getLayoutInflater() .inflate(R.layout.recycler_header_title_detail, parent, false)); } @Override public void onBindHeadViewHolder(AirAdapter.AirHeadViewHolder holder) { AlbumSongHeader header = (AlbumSongHeader) holder; header.title.setText(mAlbum.getTitle()); header.subTitle.setText(mAlbum.getAlbumArtist()); if (mAlbum.getYear() != 0) { header.desc.setText(mAlbum.getYear() + " , " + mSongList.size() + " songs"); } else { header.desc.setText(mSongList.size() + " songs"); } } private class AlbumSongHeader extends AirAdapter.AirHeadViewHolder { private TextView title; private TextView subTitle; private TextView desc; public AlbumSongHeader(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.header_title); subTitle = (TextView) itemView.findViewById(R.id.header_sub_title); desc = (TextView) itemView.findViewById(R.id.header_desc); } } } }