package what.whatandroid.artist;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import api.torrents.artist.Artist;
import what.whatandroid.R;
import what.whatandroid.WhatApplication;
import what.whatandroid.callbacks.LoadingListener;
import what.whatandroid.callbacks.SetTitleCallback;
import what.whatandroid.settings.SettingsActivity;
import what.whatandroid.views.ImageDialog;
/**
* Fragment displaying the artist image and list of releases and requests
*/
public class ArtistReleasesFragment extends Fragment implements LoadingListener<Artist>, View.OnClickListener {
/**
* The artist being shown
*/
private Artist artist;
/**
* Various content views displaying the artist information
*/
private ImageView image;
private ProgressBar spinner;
private View artContainer;
private ExpandableListView torrentList;
public ArtistReleasesFragment(){
//Required empty ctor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.expandable_list_view, container, false);
torrentList = (ExpandableListView)view.findViewById(R.id.exp_list);
View header = inflater.inflate(R.layout.header_image, torrentList, false);
torrentList.addHeaderView(header);
image = (ImageView)header.findViewById(R.id.image);
image.setOnClickListener(this);
spinner = (ProgressBar)header.findViewById(R.id.loading_indicator);
artContainer = header.findViewById(R.id.art_container);
if (artist != null){
populateViews();
}
return view;
}
/**
* Update all the artist information with the loaded api request
*/
private void populateViews(){
((SetTitleCallback)getActivity()).setTitle(artist.getResponse().getName());
String imgUrl = artist.getResponse().getImage();
if (!SettingsActivity.imagesEnabled(getActivity())) {
artContainer.setVisibility(View.GONE);
} else {
artContainer.setVisibility(View.VISIBLE);
WhatApplication.loadImage(getActivity(), imgUrl, image, spinner, null, null);
}
if (torrentList.getAdapter() == null){
ArtistTorrentAdapter adapter = new ArtistTorrentAdapter(getActivity(), artist.getReleases().flatten(),
artist.getResponse().getRequests());
torrentList.setAdapter(adapter);
torrentList.setOnChildClickListener(adapter);
}
}
@Override
public void onClick(View v){
if (v.getId() == R.id.image){
ImageDialog dialog = ImageDialog.newInstance(artist.getResponse().getImage());
dialog.show(getChildFragmentManager(), "image_dialog");
}
}
@Override
public void onLoadingComplete(Artist data){
artist = data;
if (isAdded()){
populateViews();
}
}
}