package what.whatandroid.artist;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import java.util.Collections;
import api.torrents.artist.Artist;
import api.torrents.artist.Tags;
import what.whatandroid.R;
import what.whatandroid.callbacks.LoadingListener;
import what.whatandroid.comments.HTMLListTagHandler;
import what.whatandroid.imgloader.HtmlImageHider;
/**
* Fragment to display artist description, tags and similar artists listing
*/
public class ArtistDescriptionFragment extends Fragment implements LoadingListener<Artist> {
/**
* The artist being shown
*/
private Artist artist;
private TextView description, tags, noContent;
private SimilarArtistAdapter adapter;
public ArtistDescriptionFragment(){
//Required empty ctor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_list_view, container, false);
ListView list = (ListView)view.findViewById(R.id.list);
noContent = (TextView)view.findViewById(R.id.no_content_notice);
View header = inflater.inflate(R.layout.header_artist_description, list, false);
description = (TextView)header.findViewById(R.id.description);
tags = (TextView)header.findViewById(R.id.tags);
noContent.setText("none");
list.addHeaderView(header, null, false);
list.setHeaderDividersEnabled(false);
adapter = new SimilarArtistAdapter(getActivity());
list.setAdapter(adapter);
list.setOnItemClickListener(adapter);
if (artist != null){
populateViews();
}
return view;
}
private void populateViews(){
if (artist.getResponse().getSimilarArtists().isEmpty()){
noContent.setVisibility(View.VISIBLE);
}
else if (adapter.isEmpty()){
adapter.addAll(artist.getResponse().getSimilarArtists());
adapter.notifyDataSetChanged();
}
if (!artist.getResponse().getBody().isEmpty()){
description.setText(Html.fromHtml(artist.getResponse().getBody(),
new HtmlImageHider(getActivity()), new HTMLListTagHandler()));
}
else {
description.setVisibility(View.GONE);
}
//Sort the tags in descending order
Collections.sort(artist.getResponse().getTags(),
Collections.reverseOrder(new Tags.TagComparator()));
String tagList = artist.getResponse().getTags().toString();
tagList = tagList.substring(tagList.indexOf('[') + 1, tagList.lastIndexOf(']'));
tags.setText(tagList);
}
@Override
public void onLoadingComplete(Artist data){
artist = data;
if (isAdded()){
populateViews();
}
}
}