diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/AboutDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/AboutDialog.java index 0cb1c79b..1a2aa70d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/AboutDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/AboutDialog.java @@ -27,14 +27,7 @@ public class AboutDialog extends DialogFragment { getActivity().getResources().getText(R.string.credits_3), getActivity().getResources().getText(R.string.credits_4)) ) - .positiveText(getActivity().getResources().getString(android.R.string.ok)) - .callback(new MaterialDialog.ButtonCallback() { - @Override - public void onPositive(MaterialDialog dialog) { - super.onPositive(dialog); - dialog.dismiss(); - } - }) + .positiveText(android.R.string.ok) .build(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java index ca3f8b5a..f1b47b81 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java @@ -52,7 +52,7 @@ public class CreatePlaylistDialog extends DialogFragment { public void onInput(MaterialDialog materialDialog, CharSequence charSequence) { if (getActivity() == null) return; - if (!charSequence.toString().trim().equals("")) { + if (!charSequence.toString().trim().isEmpty()) { final int playlistId = PlaylistsUtil.createPlaylist(getActivity(), charSequence.toString()); if (playlistId != -1 && getActivity() != null) { //noinspection unchecked diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java index 8bb05421..a448924f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java @@ -42,12 +42,6 @@ public class DeletePlaylistDialog extends DialogFragment { long playlistId = getArguments().getLong("playlist_id"); PlaylistsUtil.deletePlaylist(getActivity(), playlistId); } - - @Override - public void onNegative(MaterialDialog dialog) { - super.onNegative(dialog); - dialog.dismiss(); - } }).build(); } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java new file mode 100644 index 00000000..582c346c --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java @@ -0,0 +1,66 @@ +package com.kabouzeid.gramophone.dialogs; + +import android.app.Dialog; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.DialogFragment; +import android.text.Html; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.util.MusicUtil; + +import java.util.ArrayList; + +/** + * @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad) + */ +public class DeleteSongsDialog extends DialogFragment { + + public static DeleteSongsDialog create(Song song) { + ArrayList list = new ArrayList<>(); + list.add(song); + return create(list); + } + + public static DeleteSongsDialog create(ArrayList songs) { + DeleteSongsDialog dialog = new DeleteSongsDialog(); + Bundle args = new Bundle(); + args.putSerializable("songs", songs); + dialog.setArguments(args); + return dialog; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + //noinspection unchecked + ArrayList songs = (ArrayList) getArguments().getSerializable("songs"); + int title; + CharSequence content; + if (songs.size() > 1) { + title = R.string.delete_songs_title; + content = Html.fromHtml(getString(R.string.delete_x_songs, songs.size())); + } else { + title = R.string.delete_song_title; + content = Html.fromHtml(getString(R.string.delete_song_x, songs.get(0).getTitle())); + } + return new MaterialDialog.Builder(getActivity()) + .title(title) + .content(content) + .positiveText(R.string.delete_action) + .negativeText(android.R.string.cancel) + .callback(new MaterialDialog.ButtonCallback() { + @Override + public void onPositive(MaterialDialog dialog) { + super.onPositive(dialog); + if (getActivity() == null) + return; + //noinspection unchecked + ArrayList songs = (ArrayList) getArguments().getSerializable("songs"); + MusicUtil.deleteTracks(getActivity(), songs); + } + }).build(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/PlayingQueueDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/PlayingQueueDialog.java index cc3364d0..bda4a265 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/PlayingQueueDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/PlayingQueueDialog.java @@ -39,7 +39,7 @@ public class PlayingQueueDialog extends DialogFragment { MaterialDialog dialog = new MaterialDialog.Builder(getActivity()) .title(getActivity().getResources().getString(R.string.label_current_playing_queue)) .customView(R.layout.dialog_playlist, false) - .positiveText(getActivity().getResources().getString(R.string.save_as_playlist)) + .positiveText(R.string.save_as_playlist) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { @@ -73,6 +73,13 @@ public class PlayingQueueDialog extends DialogFragment { playingQueueAdapter.notifyDataSetChanged(); } }); + dragSortListView.post(new Runnable() { + @Override + public void run() { + dragSortListView.requestFocus(); + dragSortListView.setSelection(MusicPlayerRemote.getPosition()); + } + }); return dialog; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongDetailDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongDetailDialog.java index de7dd4e3..ec3770cf 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongDetailDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongDetailDialog.java @@ -53,12 +53,6 @@ public class SongDetailDialog extends DialogFragment { .customView(R.layout.dialog_file_details, true) .title(context.getResources().getString(R.string.label_details)) .positiveText(android.R.string.ok) - .callback(new MaterialDialog.ButtonCallback() { - @Override - public void onPositive(MaterialDialog dialog) { - dialog.dismiss(); - } - }) .build(); View dialogView = dialog.getCustomView(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java deleted file mode 100644 index f5a9fbfe..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.kabouzeid.gramophone.helper; - -import android.content.Context; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.util.MusicUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad) - */ -public class DeleteSongsDialogHelper { - - public static MaterialDialog getDialog(final Context context, final Song song) { - List tmpList = new ArrayList<>(); - tmpList.add(song); - return getDialog(context, tmpList); - } - - public static MaterialDialog getDialog(final Context context, final List songs) { - String title = context.getResources().getString(R.string.delete_songs_1); - title = songs.size() > 1 ? title + songs.size() + context.getResources().getString(R.string.delete_songs_2) : title + "'" + songs.get(0).title + "' " + "?"; - return new MaterialDialog.Builder(context) - .title(title) - .content(context.getResources().getString(R.string.delete_warning)) - .positiveText(context.getResources().getString(R.string.delete_action)) - .negativeText(context.getResources().getString(android.R.string.cancel)) - .callback(new MaterialDialog.ButtonCallback() { - @Override - public void onPositive(MaterialDialog dialog) { - super.onPositive(dialog); - dialog.dismiss(); - MusicUtil.deleteTracks(context, songs); - } - - @Override - public void onNegative(MaterialDialog dialog) { - super.onNegative(dialog); - dialog.dismiss(); - } - }).build(); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MenuItemClickHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MenuItemClickHelper.java index 0bb8b966..0ca8a82d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MenuItemClickHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MenuItemClickHelper.java @@ -8,6 +8,7 @@ import android.view.MenuItem; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog; +import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog; import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog; import com.kabouzeid.gramophone.dialogs.SongDetailDialog; import com.kabouzeid.gramophone.loader.SongFilePathLoader; @@ -28,7 +29,7 @@ public class MenuItemClickHelper { public static boolean handleSongMenuClick(ActionBarActivity activity, Song song, MenuItem item) { switch (item.getItemId()) { case R.id.action_delete_from_disk: - DeleteSongsDialogHelper.getDialog(activity, song).show(); + DeleteSongsDialog.create(song).show(activity.getSupportFragmentManager(), "DELETE_SONGS"); return true; case R.id.action_add_to_playlist: AddToPlaylistDialog.create(song).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST"); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index 50937d46..1c4cfa41 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -57,10 +57,12 @@ public abstract class AbsFabActivity extends AbsBaseActivity { if (accentColor == Color.WHITE) { getFab().setColorNormal(accentColor); getFab().setColorPressed(ColorChooserDialog.shiftColorDown(accentColor)); + getFab().setColorRipple(ColorChooserDialog.shiftColorUp(accentColor)); getFab().getDrawable().setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN); } else { getFab().setColorNormal(accentColor); getFab().setColorPressed(ColorChooserDialog.shiftColorUp(accentColor)); + getFab().setColorRipple(ColorChooserDialog.shiftColorDown(accentColor)); getFab().getDrawable().clearColorFilter(); } @@ -122,6 +124,10 @@ public abstract class AbsFabActivity extends AbsBaseActivity { updateControllerState(); } + protected void updateControllerState() { + updateFabState(); + } + public Pair[] getSharedViewsWithFab(Pair[] sharedViews) { Pair[] sharedViewsWithFab; if (sharedViews != null) { @@ -134,10 +140,6 @@ public abstract class AbsFabActivity extends AbsBaseActivity { return sharedViewsWithFab; } - protected void updateControllerState() { - updateFabState(); - } - @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java b/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java index 1f478e4f..4c305b1b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/widget/PlayPauseDrawable.java @@ -142,10 +142,6 @@ public class PlayPauseDrawable extends Drawable { return anim; } - public boolean isPlay() { - return isPlaySet; - } - private void setProgress(float progress) { this.progress = progress; invalidateSelf(); diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index 8d6657f8..fe15afad 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -64,12 +64,14 @@ android:id="@+id/statusBar" android:layout_width="match_parent" android:layout_height="@dimen/statusMargin" - android:background="@android:color/transparent" /> + android:background="@android:color/transparent" + tools:ignore="ContentDescription" /> + %1$s? ]]> + %1$s? + ]]> + %1$d songs? + ]]> + Delete Song + Delete Songs Rename Playlist Delete Playlist Add to Playlist New Playlist - Delete\u0020 - \u0020songs? "Warning: This operation can not be undone." Shuffle all @@ -108,6 +114,7 @@ This playlist is empty No playlists Playlist name + Song Download from LastFM