package se.slide.sgu;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import de.passsy.holocircularprogressbar.HoloCircularProgressBar;
import se.slide.sgu.model.Content;
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.List;
public class ContentAdapter extends ArrayAdapter<Content> {
private final String TAG = "ContentAdapter";
private LayoutInflater mInflater;
private ContentListener mListener;
private Resources mResource;
private List<Content> mObjects;
public ContentAdapter(Context context, int textViewResourceId, List<Content> objects) {
super(context, textViewResourceId, objects);
mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
mListener = (ContentListener) context;
mResource = context.getResources();
mObjects = objects;
}
public List<Content> getObjects() {
return mObjects;
}
@Override
public int getCount() {
return mObjects.size();
}
@Override
public Content getItem(int position) {
return mObjects.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_card, null);
holder = new ViewHolder();
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.length = (TextView) convertView.findViewById(R.id.length);
holder.content = (TextView) convertView.findViewById(R.id.content);
holder.download = (Button) convertView.findViewById(R.id.btnDownload);
holder.play = (Button) convertView.findViewById(R.id.btnPlay);
holder.downloadPlay = (ImageButton) convertView.findViewById(R.id.downloadOrPlayButton);
holder.progressAndButtonHolder = (RelativeLayout) convertView.findViewById(R.id.progressAndButtonHolder);
holder.downloadProgressBar = (HoloCircularProgressBar) convertView.findViewById(R.id.holoCircularProgressBar);
holder.elapsedProgressBar = (ProgressBar) convertView.findViewById(R.id.elapsedProgressBar);
holder.elapsedTotal = (TextView) convertView.findViewById(R.id.elapsedTotal);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
final Content content = getItem(position);
// First: set the mp3
//holder.mp3 = content.mp3;
String podcastImage = "placeholderSGU.png";
if (content.image != null && !content.image.isEmpty())
podcastImage = content.image;
ImageLoader imageLoader = VolleyHelper.getImageLoader();
imageLoader.get(Utils.HTTP_PODCAST_IMAGES + podcastImage, ImageLoader.getImageListener(holder.icon, R.drawable.placeholder_sgu, R.drawable.placeholder_sgu));
String title = content.title;
if (content.friendlyTitle != null && !content.friendlyTitle.isEmpty())
title = content.friendlyTitle;
holder.title.setText(title);
holder.length.setText(Formatter.convertBytesToMegabytes(content.length));
holder.content.setText(content.description);
holder.elapsedProgressBar.setMax(100);
holder.elapsedProgressBar.setProgress(0);
holder.elapsedProgressBar.setVisibility(View.VISIBLE);
holder.elapsedTotal.setVisibility(View.VISIBLE);
float progressValue = 0f;
holder.downloadProgressBar.setProgress(progressValue);
final File file = Utils.getFilepath(content.getFilename());
holder.downloadPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (file.exists())
mListener.playContent(content);
else {
//new DeleteOrDownloadAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, content);
try {
content.downloadId = ContentDownloadManager.INSTANCE.addToDownloadQueue(content.mp3, content.title, content.description, Utils.formatFilename(content.title));
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
Utils.updateView(mResource, content, holder);
content.dirty = false;
return convertView;
}
public class ViewHolder {
String mp3;
ImageView icon;
TextView title;
TextView length;
TextView content;
Button download;
Button play;
ImageButton downloadPlay;
ProgressBar elapsedProgressBar;
TextView elapsedTotal;
RelativeLayout progressAndButtonHolder;
HoloCircularProgressBar downloadProgressBar;
}
private class FileExistsAsyncTask extends AsyncTask<File, Void, Boolean> {
private WeakReference<ViewHolder> weakHolder;
public FileExistsAsyncTask(ViewHolder holder) {
weakHolder = new WeakReference<ViewHolder>(holder);
}
@Override
protected Boolean doInBackground(File... files) {
return files[0].exists();
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
ViewHolder holder = weakHolder.get();
if (holder != null) {
//holder.play.setEnabled(result);
if (result) {
holder.play.setVisibility(View.VISIBLE);
holder.download.setText(R.string.delete);
}
else {
holder.play.setVisibility(View.GONE);
holder.download.setText(R.string.download);
}
}
}
}
}