Java tutorial
/* * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law * or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package com.boko.vimusic.menu; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import com.boko.vimusic.Config; import com.boko.vimusic.R; import com.boko.vimusic.cache.ImageFetcher; import com.boko.vimusic.model.Song; import com.boko.vimusic.utils.CommonUtils; import com.boko.vimusic.utils.MusicUtils; /** * Alert dialog used to delete tracks. * <p> * TODO: Remove albums from the recents list upon deletion. * * @author Andrew Neal (andrewdneal@gmail.com) */ public class DeleteDialog extends DialogFragment { public interface DeleteDialogCallback { public void onDelete(Song[] id); } /** * The item(s) to delete */ private Song[] mItemList; /** * The image cache */ private ImageFetcher mFetcher; /** * Empty constructor as per the {@link Fragment} documentation */ public DeleteDialog() { } /** * @param title * The title of the artist, album, or song to delete * @param items * The item(s) to delete * @param key * The key used to remove items from the cache. * @return A new instance of the dialog */ public static DeleteDialog newInstance(final String title, final Song[] items, final String key) { final DeleteDialog frag = new DeleteDialog(); final Bundle args = new Bundle(); args.putString(Config.NAME, title); args.putSerializable("items", items); args.putString("cachekey", key); frag.setArguments(args); return frag; } /** * {@inheritDoc} */ @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final String delete = getString(R.string.context_menu_delete); final Bundle arguments = getArguments(); // Get the image cache key final String key = arguments.getString("cachekey"); // Get the track(s) to delete mItemList = (Song[]) arguments.getSerializable("items"); // Get the dialog title final String title = arguments.getString(Config.NAME); final String dialogTitle = getString(R.string.delete_dialog_title, title); // Initialize the image cache mFetcher = CommonUtils.getImageFetcher(getActivity()); // Build the dialog return new AlertDialog.Builder(getActivity()).setTitle(dialogTitle).setMessage(R.string.cannot_be_undone) .setPositiveButton(delete, new OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int which) { // Remove the items from the image cache mFetcher.removeFromCache(key); // Delete the selected item(s) MusicUtils.deleteTracks(getActivity(), mItemList); if (getActivity() instanceof DeleteDialogCallback) { ((DeleteDialogCallback) getActivity()).onDelete(mItemList); } dialog.dismiss(); } }).setNegativeButton(R.string.cancel, new OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int which) { dialog.dismiss(); } }).create(); } }