OSDN Git Service

Apollo: Add menu action to delete current track.
authorKyrylo Mikos <kiril.mik.os@gmail.com>
Wed, 10 Jul 2013 20:45:40 +0000 (23:45 +0300)
committerKyrylo Mikos <kiril.mik.os@gmail.com>
Tue, 23 Jul 2013 20:00:19 +0000 (23:00 +0300)
Change-Id: I8fad766ebba53bf37d8f965761e9da4ca4fafb87

res/menu/audio_player.xml
src/com/andrew/apollo/menu/DeleteDialog.java
src/com/andrew/apollo/ui/activities/AudioPlayerActivity.java

index ba8c715..4c97557 100644 (file)
@@ -28,5 +28,9 @@
         android:id="@+id/menu_audio_player_ringtone"
         android:showAsAction="never"
         android:title="@string/context_menu_use_as_ringtone"/>
+    <item
+        android:id="@+id/menu_audio_player_delete"
+        android:showAsAction="never"
+        android:title="@string/context_menu_delete"/>
 
 </menu>
index 0610838..845eca0 100644 (file)
@@ -33,6 +33,10 @@ import com.andrew.apollo.utils.MusicUtils;
  */
 public class DeleteDialog extends DialogFragment {
 
+    public interface DeleteDialogCallback {
+        public void onDelete(long[] id);
+    }
+
     /**
      * The item(s) to delete
      */
@@ -92,6 +96,9 @@ public class DeleteDialog extends DialogFragment {
                         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() {
index bc6c64e..c13a779 100644 (file)
@@ -38,7 +38,6 @@ import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.Window;
 import android.view.animation.AnimationUtils;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -55,6 +54,7 @@ import com.andrew.apollo.R;
 import com.andrew.apollo.adapters.PagerAdapter;
 import com.andrew.apollo.cache.ImageFetcher;
 import com.andrew.apollo.ui.fragments.QueueFragment;
+import com.andrew.apollo.menu.DeleteDialog;
 import com.andrew.apollo.utils.ApolloUtils;
 import com.andrew.apollo.utils.MusicUtils;
 import com.andrew.apollo.utils.MusicUtils.ServiceToken;
@@ -73,7 +73,7 @@ import java.lang.ref.WeakReference;
  * @author Andrew Neal (andrewdneal@gmail.com)
  */
 public class AudioPlayerActivity extends FragmentActivity implements ServiceConnection,
-        OnSeekBarChangeListener {
+        OnSeekBarChangeListener, DeleteDialog.DeleteDialogCallback {
 
     // Message to refresh the time
     private static final int REFRESH_TIME = 1;
@@ -363,12 +363,26 @@ public class AudioPlayerActivity extends FragmentActivity implements ServiceConn
                 // Settings
                 NavUtils.openSettings(this);
                 return true;
+            case R.id.menu_audio_player_delete:
+                // Delete current song
+                DeleteDialog.newInstance(MusicUtils.getTrackName(), new long[] {
+                    MusicUtils.getCurrentAudioId()
+                }, null).show(getSupportFragmentManager(), "DeleteDialog");
+                return true;
             default:
                 break;
         }
         return super.onOptionsItemSelected(item);
     }
 
+    @Override
+    public void onDelete(long[] ids) {
+        ((QueueFragment)mPagerAdapter.getFragment(0)).refreshQueue();
+        if (MusicUtils.getQueue().length == 0) {
+            NavUtils.goHome(this);
+        }
+    }
+
     /**
      * {@inheritDoc}
      */