/* * Copyright (C) 2014 Fastboot Mobile, LLC. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; * if not, see <http://www.gnu.org/licenses>. */ package com.fastbootmobile.encore.app.adapters; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.ProgressBar; import android.widget.TextView; import com.fastbootmobile.encore.api.echonest.AutoMixBucket; import com.fastbootmobile.encore.api.echonest.AutoMixManager; import com.fastbootmobile.encore.app.R; import java.util.List; /** * Adapter to display a ListView of AutoMix buckets */ public class BucketAdapter extends BaseAdapter { /** * View Holder */ public static class ViewHolder { public TextView tvBucketName; public ProgressBar pbBucketSpinner; public ImageView ivOverflow; } private List<AutoMixBucket> mBuckets; /** * Sets the list of {@link com.fastbootmobile.encore.api.echonest.AutoMixBucket} to show * @param buckets The list of buckets to show */ public void setBuckets(List<AutoMixBucket> buckets) { mBuckets = buckets; } /** * {@inheritDoc} */ @Override public int getCount() { return mBuckets == null ? 0 : mBuckets.size(); } /** * {@inheritDoc} */ @Override public AutoMixBucket getItem(int i) { return mBuckets != null ? mBuckets.get(i) : null; } /** * {@inheritDoc} */ @Override public long getItemId(int i) { return i; } /** * {@inheritDoc} */ @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder tag; if (view == null) { LayoutInflater inflater = (LayoutInflater) viewGroup.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.item_bucket, viewGroup, false); tag = new ViewHolder(); tag.tvBucketName = (TextView) view.findViewById(R.id.tvBucketName); tag.pbBucketSpinner = (ProgressBar) view.findViewById(R.id.pbBucketSpinner); tag.ivOverflow = (ImageView) view.findViewById(R.id.ivOverflow); view.setTag(tag); } else { tag = (ViewHolder) view.getTag(); } final AutoMixBucket bucket = getItem(i); tag.tvBucketName.setText(bucket.getName()); tag.ivOverflow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { PopupMenu popupMenu = new PopupMenu(v.getContext(), v); popupMenu.inflate(R.menu.bucket_overflow); popupMenu.show(); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.menu_play_now: new Thread() { public void run() { AutoMixManager.getDefault().startPlay(bucket); } }.start(); break; case R.id.menu_delete: confirmDelete(v.getContext(), bucket); break; default: return false; } return true; } }); } }); return view; } private void confirmDelete(final Context ctx, final AutoMixBucket bucket) { AlertDialog.Builder builder = new AlertDialog.Builder(ctx); builder.setMessage(R.string.automix_delete_confirm); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { AutoMixManager.getDefault().destroyBucket(bucket); notifyDataSetChanged(); } }); builder.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); } }