package com.airplayer.fragment.singleitem;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.GridLayoutManager;
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.fetchpicture.FetchArtistPictureActivity;
import com.airplayer.adapter.AirAdapter;
import com.airplayer.adapter.AlbumAdapter;
import com.airplayer.model.AirModelSingleton;
import com.airplayer.model.Album;
import com.airplayer.model.Artist;
import com.airplayer.model.PictureGettable;
import java.util.List;
/**
* Created by ZiyiTsang on 15/6/14.
*/
public class ArtistFragment extends SingleItemChildFragment {
public static final String ARTIST_RECEIVED = "artist_received";
private Artist mArtist;
private List<Album> mAlbumList;
private FragmentManager mFragmentManager;
public static ArtistFragment newInstance(Artist artist) {
ArtistFragment fragment = new ArtistFragment();
Bundle args = new Bundle();
args.putSerializable(ARTIST_RECEIVED, artist);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mArtist = (Artist) getArguments().get(ARTIST_RECEIVED);
mAlbumList = AirModelSingleton.getInstance(getActivity()).getArtistAlbum(mArtist.getName());
mFragmentManager = getActivity().getSupportFragmentManager();
}
public void setupRecyclerView(RecyclerView recyclerView) {
final GridLayoutManager manager = new GridLayoutManager(getActivity(), 2);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return position == 0 ? manager.getSpanCount() : 1;
}
});
recyclerView.setLayoutManager(manager);
AlbumAdapter adapter = new ArtistAlbumAdapter(getActivity(), mAlbumList);
adapter.setOnItemClickListener(new AirAdapter.OnItemClickListener() {
@Override
public void onItemClicked(View view, int position) {
FragmentTransaction ft = mFragmentManager.beginTransaction();
ft.replace(R.id.fragment_container, AlbumFragment.newInstance(mAlbumList.get(position - 1)));
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
});
recyclerView.setAdapter(adapter);
}
@Override
public void setupDraweeView() {
mToolbar.setTitle(mArtist.getName());
mDraweeView.setImageURI(mArtist.getArtistPictureUri());
mDraweeView.setOnClickListener(new OnPictureClickListener(mArtist, FetchArtistPictureActivity.class) {
@Override
public void onPictureDelete() {
mArtist.setPictureDownloaded(false);
mDraweeView.setImageURI(mArtist.getArtistPictureUri());
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == PictureGettable.REQUEST_CODE_FETCH_PICTURE) {
mArtist.setPictureDownloaded(true);
mDraweeView.setImageURI(mArtist.getArtistPictureUri());
}
}
}
@Override
public int getRootViewId() {
return R.layout.recycler_collapsing_toolbar_no_fab;
}
private class ArtistAlbumAdapter extends AlbumAdapter {
public ArtistAlbumAdapter(Context context, List<Album> list) {
super(context, list);
}
@Override
public AirHeadViewHolder onCreateHeadViewHolder(ViewGroup parent) {
return new ArtistAlbumHeader(getLayoutInflater()
.inflate(R.layout.recycler_header_title_detail, parent, false));
}
@Override
public void onBindHeadViewHolder(AirAdapter.AirHeadViewHolder holder) {
ArtistAlbumHeader header = (ArtistAlbumHeader) holder;
header.name.setText(mArtist.getName());
header.albumCount.setText(mAlbumList.size() + " albums");
}
private class ArtistAlbumHeader extends AirAdapter.AirHeadViewHolder {
private TextView name;
private TextView albumCount;
public ArtistAlbumHeader(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.header_title);
albumCount = (TextView) itemView.findViewById(R.id.header_sub_title);
}
}
}
}