diff --git a/app/build.gradle b/app/build.gradle index 67f81e0d..41e55138 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,7 +39,7 @@ static def gitBranch() { android { compileSdkVersion 27 - buildToolsVersion '27.0.0' + buildToolsVersion '27.0.2' dataBinding { enabled = true } @@ -76,6 +76,10 @@ android { disable 'InvalidPackage' abortOnError false } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } ext { @@ -83,8 +87,7 @@ ext { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "com.android.support:support-compat:$supportLibVersion" implementation "com.android.support:support-core-utils:$supportLibVersion" implementation "com.android.support:support-core-ui:$supportLibVersion" @@ -101,7 +104,6 @@ dependencies { implementation "com.android.support:percent:$supportLibVersion" implementation "com.android.support:preference-v7:$supportLibVersion" implementation "com.android.support:preference-v14:$supportLibVersion" - implementation 'com.github.kabouzeid:app-theme-helper:1.3.7' implementation 'com.github.kabouzeid:RecyclerView-FastScroll:1.0.16-kmod' implementation 'com.github.kabouzeid:SeekArc:1.2-kmod' @@ -120,17 +122,13 @@ dependencies { implementation 'me.zhanghai.android.materialprogressbar:library:1.4.1' implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5' implementation 'com.jakewharton:butterknife:8.6.0' - implementation('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') { transitive = true } - implementation 'com.crashlytics.sdk.android:crashlytics:2.8.0' implementation('com.crashlytics.sdk.android:answers:1.3.13@aar') { transitive = true } - testImplementation 'junit:junit:4.12' - annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0' } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java index 9a9b73e1..c37b966e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -190,30 +190,24 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter { + final Playlist playlist = dataSet.get(getAdapterPosition()); + final PopupMenu popupMenu = new PopupMenu(activity, view); + popupMenu.inflate(getItemViewType() == SMART_PLAYLIST ? R.menu.menu_item_smart_playlist : R.menu.menu_item_playlist); + if (playlist instanceof LastAddedPlaylist) { + popupMenu.getMenu().findItem(R.id.action_clear_playlist).setVisible(false); } + popupMenu.setOnMenuItemClickListener(item -> { + if (item.getItemId() == R.id.action_clear_playlist) { + if (playlist instanceof AbsSmartPlaylist) { + ClearSmartPlaylistDialog.create((AbsSmartPlaylist) playlist).show(activity.getSupportFragmentManager(), "CLEAR_SMART_PLAYLIST_" + playlist.name); + return true; + } + } + return PlaylistMenuHelper.handleMenuClick( + activity, dataSet.get(getAdapterPosition()), item); + }); + popupMenu.show(); }); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java index e01abea4..2745423f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java @@ -166,13 +166,10 @@ public class SongFileAdapter extends AbsMultiSelectAdapter { + int position = getAdapterPosition(); + if (isPositionInRange(position)) { + callbacks.onFileMenuClicked(dataSet.get(position), v); } }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ArtistSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ArtistSongAdapter.java index c14b7202..20114573 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ArtistSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/ArtistSongAdapter.java @@ -114,22 +114,16 @@ public class ArtistSongAdapter extends ArrayAdapter implements MaterialCab }); convertView.setActivated(isChecked(song)); - convertView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (isInQuickSelectMode()) { - toggleChecked(song); - } else { - MusicPlayerRemote.openQueue(dataSet, position, true); - } + convertView.setOnClickListener(view -> { + if (isInQuickSelectMode()) { + toggleChecked(song); + } else { + MusicPlayerRemote.openQueue(dataSet, position, true); } }); - convertView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - toggleChecked(song); - return true; - } + convertView.setOnLongClickListener(view -> { + toggleChecked(song); + return true; }); return convertView; diff --git a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetCard.java b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetCard.java index 4b1c22b7..e8bd183f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetCard.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetCard.java @@ -5,7 +5,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.support.v7.graphics.Palette; diff --git a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetClassic.java b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetClassic.java index f0a3b1cd..4412485e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetClassic.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetClassic.java @@ -5,7 +5,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.support.v7.graphics.Palette; diff --git a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetSmall.java b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetSmall.java index 113209cf..7d63c6ff 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetSmall.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appwidgets/AppWidgetSmall.java @@ -5,7 +5,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.support.v7.graphics.Palette; diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/AddToPlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/AddToPlaylistDialog.java index ac96afed..95687871 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/AddToPlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/AddToPlaylistDialog.java @@ -49,19 +49,16 @@ public class AddToPlaylistDialog extends DialogFragment { return new MaterialDialog.Builder(getActivity()) .title(R.string.add_playlist_title) .items(playlistNames) - .itemsCallback(new MaterialDialog.ListCallback() { - @Override - public void onSelection(@NonNull MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { - //noinspection unchecked - final ArrayList songs = getArguments().getParcelableArrayList("songs"); - if (songs == null) return; - if (i == 0) { - materialDialog.dismiss(); - CreatePlaylistDialog.create(songs).show(getActivity().getSupportFragmentManager(), "ADD_TO_PLAYLIST"); - } else { - materialDialog.dismiss(); - PlaylistsUtil.addToPlaylist(getActivity(), songs, playlists.get(i - 1).id, true); - } + .itemsCallback((materialDialog, view, i, charSequence) -> { + //noinspection unchecked + final ArrayList songs = getArguments().getParcelableArrayList("songs"); + if (songs == null) return; + if (i == 0) { + materialDialog.dismiss(); + CreatePlaylistDialog.create(songs).show(getActivity().getSupportFragmentManager(), "ADD_TO_PLAYLIST"); + } else { + materialDialog.dismiss(); + PlaylistsUtil.addToPlaylist(getActivity(), songs, playlists.get(i - 1).id, true); } }) .build(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/BlacklistFolderChooserDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/BlacklistFolderChooserDialog.java index c32b236c..4883e6c4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/BlacklistFolderChooserDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/BlacklistFolderChooserDialog.java @@ -98,19 +98,11 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate .items((CharSequence[]) getContentsArray()) .itemsCallback(this) .autoDismiss(false) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - dismiss(); - callback.onFolderSelection(BlacklistFolderChooserDialog.this, parentFolder); - } - }) - .onNegative(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - dismiss(); - } + .onPositive((dialog, which) -> { + dismiss(); + callback.onFolderSelection(BlacklistFolderChooserDialog.this, parentFolder); }) + .onNegative((materialDialog, dialogAction) -> dismiss()) .positiveText(R.string.add_action) .negativeText(android.R.string.cancel); if (File.pathSeparator.equals(initialPath)) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java index af1a9e22..648c6a8e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ChangelogDialog.java @@ -54,12 +54,9 @@ public class ChangelogDialog extends DialogFragment { .title(R.string.changelog) .customView(customView, false) .positiveText(android.R.string.ok) - .showListener(new DialogInterface.OnShowListener() { - @Override - public void onShow(DialogInterface dialog) { - if (getActivity() != null) - setChangelogRead(getActivity()); - } + .showListener(dialog1 -> { + if (getActivity() != null) + setChangelogRead(getActivity()); }) .build(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ClearSmartPlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ClearSmartPlaylistDialog.java index d71fa011..74b97063 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ClearSmartPlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ClearSmartPlaylistDialog.java @@ -39,14 +39,11 @@ public class ClearSmartPlaylistDialog extends DialogFragment { .content(content) .positiveText(R.string.clear_action) .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) { - return; - } - playlist.clear(getActivity()); + .onPositive((dialog, which) -> { + if (getActivity() == null) { + return; } + playlist.clear(getActivity()); }) .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 efd3261b..1d2c3f04 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/CreatePlaylistDialog.java @@ -54,26 +54,23 @@ public class CreatePlaylistDialog extends DialogFragment { .inputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME | InputType.TYPE_TEXT_FLAG_CAP_WORDS) - .input(R.string.playlist_name_empty, 0, false, new MaterialDialog.InputCallback() { - @Override - public void onInput(@NonNull MaterialDialog materialDialog, @NonNull CharSequence charSequence) { - if (getActivity() == null) - return; - final String name = charSequence.toString().trim(); - if (!name.isEmpty()) { - if (!PlaylistsUtil.doesPlaylistExist(getActivity(), name)) { - final int playlistId = PlaylistsUtil.createPlaylist(getActivity(), name); - if (getActivity() != null) { - //noinspection unchecked - ArrayList songs = getArguments().getParcelableArrayList(SONGS); - if (songs != null && !songs.isEmpty()) { - PlaylistsUtil.addToPlaylist(getActivity(), songs, playlistId, true); - } + .input(R.string.playlist_name_empty, 0, false, (materialDialog, charSequence) -> { + if (getActivity() == null) + return; + final String name = charSequence.toString().trim(); + if (!name.isEmpty()) { + if (!PlaylistsUtil.doesPlaylistExist(getActivity(), name)) { + final int playlistId = PlaylistsUtil.createPlaylist(getActivity(), name); + if (getActivity() != null) { + //noinspection unchecked + ArrayList songs = getArguments().getParcelableArrayList(SONGS); + if (songs != null && !songs.isEmpty()) { + PlaylistsUtil.addToPlaylist(getActivity(), songs, playlistId, true); } - } else { - Toast.makeText(getActivity(), getActivity().getResources().getString( - R.string.playlist_exists, name), Toast.LENGTH_SHORT).show(); } + } else { + Toast.makeText(getActivity(), getActivity().getResources().getString( + R.string.playlist_exists, name), Toast.LENGTH_SHORT).show(); } } }) 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 ea69ddaf..397a5d92 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeletePlaylistDialog.java @@ -55,13 +55,10 @@ public class DeletePlaylistDialog extends DialogFragment { .content(content) .positiveText(R.string.delete_action) .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) - return; - PlaylistsUtil.deletePlaylists(getActivity(), playlists); - } + .onPositive((dialog, which) -> { + if (getActivity() == null) + return; + PlaylistsUtil.deletePlaylists(getActivity(), playlists); }) .build(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java index da7ef178..602cbe80 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DeleteSongsDialog.java @@ -54,13 +54,10 @@ public class DeleteSongsDialog extends DialogFragment { .content(content) .positiveText(R.string.delete_action) .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) - return; - MusicUtil.deleteTracks(getActivity(), songs); - } + .onPositive((dialog, which) -> { + if (getActivity() == null) + return; + MusicUtil.deleteTracks(getActivity(), songs); }) .build(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java index 2fd2e362..a1afce06 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java @@ -211,19 +211,9 @@ public class DonationsDialog extends DialogFragment implements BillingProcessor. strikeThrough(viewHolder.text, purchased); strikeThrough(viewHolder.price, purchased); - convertView.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - return purchased; - } - }); + convertView.setOnTouchListener((v, event) -> purchased); - convertView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - donationsDialog.donate(position); - } - }); + convertView.setOnClickListener(v -> donationsDialog.donate(position)); return convertView; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/RemoveFromPlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/RemoveFromPlaylistDialog.java index b19205b0..376fa512 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/RemoveFromPlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/RemoveFromPlaylistDialog.java @@ -54,13 +54,10 @@ public class RemoveFromPlaylistDialog extends DialogFragment { .content(content) .positiveText(R.string.remove_action) .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) - return; - PlaylistsUtil.removeFromPlaylist(getActivity(), songs); - } + .onPositive((dialog, which) -> { + if (getActivity() == null) + return; + PlaylistsUtil.removeFromPlaylist(getActivity(), songs); }) .build(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/RenamePlaylistDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/RenamePlaylistDialog.java index ccde1808..340af6e1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/RenamePlaylistDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/RenamePlaylistDialog.java @@ -38,14 +38,11 @@ public class RenamePlaylistDialog extends DialogFragment { InputType.TYPE_TEXT_VARIATION_PERSON_NAME | InputType.TYPE_TEXT_FLAG_CAP_WORDS) .input(getString(R.string.playlist_name_empty), PlaylistsUtil.getNameForPlaylist(getActivity(), playlistId), false, - new MaterialDialog.InputCallback() { - @Override - public void onInput(@NonNull MaterialDialog materialDialog, @NonNull CharSequence charSequence) { - final String name = charSequence.toString().trim(); - if (!name.isEmpty()) { - long playlistId = getArguments().getLong(PLAYLIST_ID); - PlaylistsUtil.renamePlaylist(getActivity(), playlistId, name); - } + (materialDialog, charSequence) -> { + final String name = charSequence.toString().trim(); + if (!name.isEmpty()) { + long playlistId1 = getArguments().getLong(PLAYLIST_ID); + PlaylistsUtil.renamePlaylist(getActivity(), playlistId1, name); } }) .build(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SleepTimerDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SleepTimerDialog.java index 19ea79aa..b7d452c5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SleepTimerDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SleepTimerDialog.java @@ -55,51 +55,42 @@ public class SleepTimerDialog extends DialogFragment { materialDialog = new MaterialDialog.Builder(getActivity()) .title(getActivity().getResources().getString(R.string.action_sleep_timer)) .positiveText(R.string.action_set) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) { - return; - } - if (!App.isProVersion()) { - Toast.makeText(getActivity(), getString(R.string.sleep_timer_is_a_pro_feature), Toast.LENGTH_LONG).show(); - startActivity(new Intent(getContext(), PurchaseActivity.class)); - return; - } + .onPositive((dialog, which) -> { + if (getActivity() == null) { + return; + } + if (!App.isProVersion()) { + Toast.makeText(getActivity(), getString(R.string.sleep_timer_is_a_pro_feature), Toast.LENGTH_LONG).show(); + startActivity(new Intent(getContext(), PurchaseActivity.class)); + return; + } - final int minutes = seekArcProgress; + final int minutes = seekArcProgress; - PendingIntent pi = makeTimerPendingIntent(PendingIntent.FLAG_CANCEL_CURRENT); + PendingIntent pi = makeTimerPendingIntent(PendingIntent.FLAG_CANCEL_CURRENT); - final long nextSleepTimerElapsedTime = SystemClock.elapsedRealtime() + minutes * 60 * 1000; - PreferenceUtil.getInstance(getActivity()).setNextSleepTimerElapsedRealtime(nextSleepTimerElapsedTime); + final long nextSleepTimerElapsedTime = SystemClock.elapsedRealtime() + minutes * 60 * 1000; + PreferenceUtil.getInstance(getActivity()).setNextSleepTimerElapsedRealtime(nextSleepTimerElapsedTime); + AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); + am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi); + + Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.sleep_timer_set, minutes), Toast.LENGTH_SHORT).show(); + }) + .onNeutral((dialog, which) -> { + if (getActivity() == null) { + return; + } + final PendingIntent previous = makeTimerPendingIntent(PendingIntent.FLAG_NO_CREATE); + if (previous != null) { AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); - am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, nextSleepTimerElapsedTime, pi); - - Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.sleep_timer_set, minutes), Toast.LENGTH_SHORT).show(); + am.cancel(previous); + previous.cancel(); + Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.sleep_timer_canceled), Toast.LENGTH_SHORT).show(); } }) - .onNeutral(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (getActivity() == null) { - return; - } - final PendingIntent previous = makeTimerPendingIntent(PendingIntent.FLAG_NO_CREATE); - if (previous != null) { - AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); - am.cancel(previous); - previous.cancel(); - Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.sleep_timer_canceled), Toast.LENGTH_SHORT).show(); - } - } - }) - .showListener(new DialogInterface.OnShowListener() { - @Override - public void onShow(DialogInterface dialog) { - if (makeTimerPendingIntent(PendingIntent.FLAG_NO_CREATE) != null) { - timerUpdater.start(); - } + .showListener(dialog -> { + if (makeTimerPendingIntent(PendingIntent.FLAG_NO_CREATE) != null) { + timerUpdater.start(); } }) .customView(R.layout.dialog_sleep_timer, false) @@ -114,17 +105,14 @@ public class SleepTimerDialog extends DialogFragment { seekArc.setProgressColor(ThemeSingleton.get().positiveColor.getDefaultColor()); seekArc.setThumbColor(ThemeSingleton.get().positiveColor.getDefaultColor()); - seekArc.post(new Runnable() { - @Override - public void run() { - int width = seekArc.getWidth(); - int height = seekArc.getHeight(); - int small = Math.min(width, height); + seekArc.post(() -> { + int width = seekArc.getWidth(); + int height = seekArc.getHeight(); + int small = Math.min(width, height); - FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(seekArc.getLayoutParams()); - layoutParams.height = small; - seekArc.setLayoutParams(layoutParams); - } + FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(seekArc.getLayoutParams()); + layoutParams.height = small; + seekArc.setLayoutParams(layoutParams); }); seekArcProgress = PreferenceUtil.getInstance(getActivity()).getLastSleepTimerValue(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java index 061c07b1..daad6fc6 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/SongShareDialog.java @@ -33,25 +33,22 @@ public class SongShareDialog extends DialogFragment { return new MaterialDialog.Builder(getActivity()) .title(R.string.what_do_you_want_to_share) .items(getString(R.string.the_audio_file), "\u201C" + currentlyListening + "\u201D") - .itemsCallback(new MaterialDialog.ListCallback() { - @Override - public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) { - switch (i) { - case 0: - startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, getContext()), null)); - break; - case 1: - getActivity().startActivity( - Intent.createChooser( - new Intent() - .setAction(Intent.ACTION_SEND) - .putExtra(Intent.EXTRA_TEXT, currentlyListening) - .setType("text/plain"), - null - ) - ); - break; - } + .itemsCallback((materialDialog, view, i, charSequence) -> { + switch (i) { + case 0: + startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, getContext()), null)); + break; + case 1: + getActivity().startActivity( + Intent.createChooser( + new Intent() + .setAction(Intent.ACTION_SEND) + .putExtra(Intent.EXTRA_TEXT, currentlyListening) + .setType("text/plain"), + null + ) + ); + break; } }) .build(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java index 9d556c08..65fb8e5f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java +++ b/app/src/main/java/com/kabouzeid/gramophone/lastfm/rest/LastFMRestClient.java @@ -54,14 +54,11 @@ public class LastFMRestClient { } public static Interceptor createCacheControlInterceptor() { - return new Interceptor() { - @Override - public Response intercept(Chain chain) throws IOException { - Request modifiedRequest = chain.request().newBuilder() - .addHeader("Cache-Control", String.format("max-age=%d, max-stale=%d", 31536000, 31536000)) - .build(); - return chain.proceed(modifiedRequest); - } + return chain -> { + Request modifiedRequest = chain.request().newBuilder() + .addHeader("Cache-Control", String.format("max-age=%d, max-stale=%d", 31536000, 31536000)) + .build(); + return chain.proceed(modifiedRequest); }; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/misc/DialogAsyncTask.java b/app/src/main/java/com/kabouzeid/gramophone/misc/DialogAsyncTask.java index 8b60cded..8ddd3ad2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/misc/DialogAsyncTask.java +++ b/app/src/main/java/com/kabouzeid/gramophone/misc/DialogAsyncTask.java @@ -33,12 +33,7 @@ public abstract class DialogAsyncTask extends AsyncTas protected void onPreExecute() { super.onPreExecute(); if (delay > 0) { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - initAndShowDialog(); - } - }, delay); + new Handler().postDelayed(this::initAndShowDialog, delay); } else { initAndShowDialog(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/misc/UpdateToastMediaScannerCompletionListener.java b/app/src/main/java/com/kabouzeid/gramophone/misc/UpdateToastMediaScannerCompletionListener.java index 72a5b029..48c06eea 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/misc/UpdateToastMediaScannerCompletionListener.java +++ b/app/src/main/java/com/kabouzeid/gramophone/misc/UpdateToastMediaScannerCompletionListener.java @@ -38,20 +38,17 @@ public class UpdateToastMediaScannerCompletionListener implements MediaScannerCo public void onScanCompleted(final String path, final Uri uri) { Activity activity = activityWeakReference.get(); if (activity != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - Toast toast = toastWeakReference.get(); - if (toast != null) { - if (uri == null) { - failed++; - } else { - scanned++; - } - String text = " " + String.format(scannedFiles, scanned, toBeScanned.length) + (failed > 0 ? " " + String.format(couldNotScanFiles, failed) : ""); - toast.setText(text); - toast.show(); + activity.runOnUiThread(() -> { + Toast toast = toastWeakReference.get(); + if (toast != null) { + if (uri == null) { + failed++; + } else { + scanned++; } + String text = " " + String.format(scannedFiles, scanned, toBeScanned.length) + (failed > 0 ? " " + String.format(couldNotScanFiles, failed) : ""); + toast.setText(text); + toast.show(); } }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/preferences/BlacklistPreferenceDialog.java b/app/src/main/java/com/kabouzeid/gramophone/preferences/BlacklistPreferenceDialog.java index ffa2d287..13073140 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/preferences/BlacklistPreferenceDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/preferences/BlacklistPreferenceDialog.java @@ -44,56 +44,32 @@ public class BlacklistPreferenceDialog extends DialogFragment implements Blackli .negativeText(R.string.add_action) .items(paths) .autoDismiss(false) - .itemsCallback(new MaterialDialog.ListCallback() { - @Override - public void onSelection(MaterialDialog materialDialog, View view, int i, final CharSequence charSequence) { - new MaterialDialog.Builder(getContext()) - .title(R.string.remove_from_blacklist) - .content(Html.fromHtml(getString(R.string.do_you_want_to_remove_from_the_blacklist, charSequence))) - .positiveText(R.string.remove_action) - .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - BlacklistStore.getInstance(getContext()).removePath(new File(charSequence.toString())); - refreshBlacklistData(); - } - }).show(); - } - }) + .itemsCallback((materialDialog, view, i, charSequence) -> new MaterialDialog.Builder(getContext()) + .title(R.string.remove_from_blacklist) + .content(Html.fromHtml(getString(R.string.do_you_want_to_remove_from_the_blacklist, charSequence))) + .positiveText(R.string.remove_action) + .negativeText(android.R.string.cancel) + .onPositive((materialDialog12, dialogAction) -> { + BlacklistStore.getInstance(getContext()).removePath(new File(charSequence.toString())); + refreshBlacklistData(); + }).show()) // clear - .onNeutral(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - new MaterialDialog.Builder(getContext()) - .title(R.string.clear_blacklist) - .content(R.string.do_you_want_to_clear_the_blacklist) - .positiveText(R.string.clear_action) - .negativeText(android.R.string.cancel) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - BlacklistStore.getInstance(getContext()).clear(); - refreshBlacklistData(); - } - }).show(); - } - }) + .onNeutral((materialDialog, dialogAction) -> new MaterialDialog.Builder(getContext()) + .title(R.string.clear_blacklist) + .content(R.string.do_you_want_to_clear_the_blacklist) + .positiveText(R.string.clear_action) + .negativeText(android.R.string.cancel) + .onPositive((materialDialog1, dialogAction1) -> { + BlacklistStore.getInstance(getContext()).clear(); + refreshBlacklistData(); + }).show()) // add - .onNegative(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - BlacklistFolderChooserDialog dialog = BlacklistFolderChooserDialog.create(); - dialog.setCallback(BlacklistPreferenceDialog.this); - dialog.show(getChildFragmentManager(), "FOLDER_CHOOSER"); - } - }) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) { - dismiss(); - } + .onNegative((materialDialog, dialogAction) -> { + BlacklistFolderChooserDialog dialog = BlacklistFolderChooserDialog.create(); + dialog.setCallback(BlacklistPreferenceDialog.this); + dialog.show(getChildFragmentManager(), "FOLDER_CHOOSER"); }) + .onPositive((materialDialog, dialogAction) -> dismiss()) .build(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java index d0d01e52..357a9106 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java @@ -9,7 +9,6 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.drawable.Drawable; -import android.os.Build; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java index 0ae6e977..4d197f27 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java @@ -55,63 +55,58 @@ public class PlayingNotificationImpl24 extends PlayingNotification { final PendingIntent deleteIntent = PendingIntent.getService(service, 0, intent, 0); final int bigNotificationImageSize = service.getResources().getDimensionPixelSize(R.dimen.notification_big_image_size); - service.runOnUiThread(new Runnable() { - @Override - public void run() { - SongGlideRequest.Builder.from(Glide.with(service), song) - .checkIgnoreMediaStore(service) - .generatePalette(service).build() - .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { - @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { - Palette palette = resource.getPalette(); - update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT))); - } + service.runOnUiThread(() -> SongGlideRequest.Builder.from(Glide.with(service), song) + .checkIgnoreMediaStore(service) + .generatePalette(service).build() + .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { + @Override + public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + Palette palette = resource.getPalette(); + update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT))); + } - @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - update(null, Color.TRANSPARENT); - } + @Override + public void onLoadFailed(Exception e, Drawable errorDrawable) { + update(null, Color.TRANSPARENT); + } - void update(Bitmap bitmap, int color) { - if (bitmap == null) - bitmap = BitmapFactory.decodeResource(service.getResources(), R.drawable.default_album_art); - NotificationCompat.Action playPauseAction = new NotificationCompat.Action(playButtonResId, - service.getString(R.string.action_play_pause), - retrievePlaybackAction(ACTION_TOGGLE_PAUSE)); - NotificationCompat.Action previousAction = new NotificationCompat.Action(R.drawable.ic_skip_previous_white_24dp, - service.getString(R.string.action_previous), - retrievePlaybackAction(ACTION_REWIND)); - NotificationCompat.Action nextAction = new NotificationCompat.Action(R.drawable.ic_skip_next_white_24dp, - service.getString(R.string.action_next), - retrievePlaybackAction(ACTION_SKIP)); - NotificationCompat.Builder builder = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID) - .setSmallIcon(R.drawable.ic_notification) - .setLargeIcon(bitmap) - .setContentIntent(clickIntent) - .setDeleteIntent(deleteIntent) - .setContentTitle(song.title) - .setContentText(text) - .setOngoing(isPlaying) - .setShowWhen(false) - .addAction(previousAction) - .addAction(playPauseAction) - .addAction(nextAction); + void update(Bitmap bitmap, int color) { + if (bitmap == null) + bitmap = BitmapFactory.decodeResource(service.getResources(), R.drawable.default_album_art); + NotificationCompat.Action playPauseAction = new NotificationCompat.Action(playButtonResId, + service.getString(R.string.action_play_pause), + retrievePlaybackAction(ACTION_TOGGLE_PAUSE)); + NotificationCompat.Action previousAction = new NotificationCompat.Action(R.drawable.ic_skip_previous_white_24dp, + service.getString(R.string.action_previous), + retrievePlaybackAction(ACTION_REWIND)); + NotificationCompat.Action nextAction = new NotificationCompat.Action(R.drawable.ic_skip_next_white_24dp, + service.getString(R.string.action_next), + retrievePlaybackAction(ACTION_SKIP)); + NotificationCompat.Builder builder = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID) + .setSmallIcon(R.drawable.ic_notification) + .setLargeIcon(bitmap) + .setContentIntent(clickIntent) + .setDeleteIntent(deleteIntent) + .setContentTitle(song.title) + .setContentText(text) + .setOngoing(isPlaying) + .setShowWhen(false) + .addAction(previousAction) + .addAction(playPauseAction) + .addAction(nextAction); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - builder.setStyle(new MediaStyle().setMediaSession(service.getMediaSession().getSessionToken()).setShowActionsInCompactView(0, 1, 2)) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC); - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O && PreferenceUtil.getInstance(service).coloredNotification()) - builder.setColor(color); - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + builder.setStyle(new MediaStyle().setMediaSession(service.getMediaSession().getSessionToken()).setShowActionsInCompactView(0, 1, 2)) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O && PreferenceUtil.getInstance(service).coloredNotification()) + builder.setColor(color); + } - if (stopped) - return; // notification has been stopped before loading was finished - updateNotifyModeAndPostNotification(builder.build()); - } - }); - } - }); + if (stopped) + return; // notification has been stopped before loading was finished + updateNotifyModeAndPostNotification(builder.build()); + } + })); } private PendingIntent retrievePlaybackAction(final String action) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index f435d505..a133aa67 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -211,15 +211,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setUpRecyclerViewPadding(); recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); - contentView.post(new Runnable() { - @Override - public void run() { - songsBackgroundView.getLayoutParams().height = contentView.getHeight(); - observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false); - // necessary to fix a bug - recyclerView.scrollBy(0, 1); - recyclerView.scrollBy(0, -1); - } + contentView.post(() -> { + songsBackgroundView.getLayoutParams().height = contentView.getHeight(); + observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false); + // necessary to fix a bug + recyclerView.scrollBy(0, 1); + recyclerView.scrollBy(0, -1); }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index 5ca34e8a..3791917f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -186,12 +186,9 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement songListView.setAdapter(songAdapter); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); - contentView.post(new Runnable() { - @Override - public void run() { - songListBackground.getLayoutParams().height = contentView.getHeight(); - observableScrollViewCallbacks.onScrollChanged(-(artistImageViewHeight + titleViewHeight), false, false); - } + contentView.post(() -> { + songListBackground.getLayoutParams().height = contentView.getHeight(); + observableScrollViewCallbacks.onScrollChanged(-(artistImageViewHeight + titleViewHeight), false, false); }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index ba0bd2b9..8152c959 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -86,13 +86,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { //noinspection ConstantConditions findViewById(R.id.drawer_content_container).setFitsSystemWindows(false); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - drawerLayout.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { - @TargetApi(Build.VERSION_CODES.LOLLIPOP) - @Override - public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) { - navigationView.dispatchApplyWindowInsets(windowInsets); - return windowInsets.replaceSystemWindowInsets(0, 0, 0, 0); - } + drawerLayout.setOnApplyWindowInsetsListener((view, windowInsets) -> { + navigationView.dispatchApplyWindowInsets(windowInsets); + return windowInsets.replaceSystemWindowInsets(0, 0, 0, 0); }); } @@ -174,54 +170,26 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor); checkSetUpPro(); - navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { - drawerLayout.closeDrawers(); - switch (menuItem.getItemId()) { - case R.id.nav_library: - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - setMusicChooser(LIBRARY); - } - }, 200); - break; - case R.id.nav_folders: - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - setMusicChooser(FOLDERS); - } - }, 200); - break; - case R.id.buy_pro: - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST); - } - }, 200); - break; - case R.id.nav_settings: - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - startActivity(new Intent(MainActivity.this, SettingsActivity.class)); - } - }, 200); - break; - case R.id.nav_about: - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - startActivity(new Intent(MainActivity.this, AboutActivity.class)); - } - }, 200); - break; - } - return true; + navigationView.setNavigationItemSelectedListener(menuItem -> { + drawerLayout.closeDrawers(); + switch (menuItem.getItemId()) { + case R.id.nav_library: + new Handler().postDelayed(() -> setMusicChooser(LIBRARY), 200); + break; + case R.id.nav_folders: + new Handler().postDelayed(() -> setMusicChooser(FOLDERS), 200); + break; + case R.id.buy_pro: + new Handler().postDelayed(() -> startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST), 200); + break; + case R.id.nav_settings: + new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, SettingsActivity.class)), 200); + break; + case R.id.nav_about: + new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, AboutActivity.class)), 200); + break; } + return true; }); } @@ -245,13 +213,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { if (navigationDrawerHeader == null) { navigationDrawerHeader = navigationView.inflateHeaderView(R.layout.navigation_drawer_header); //noinspection ConstantConditions - navigationDrawerHeader.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - drawerLayout.closeDrawers(); - if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { - expandPanel(); - } + navigationDrawerHeader.setOnClickListener(v -> { + drawerLayout.closeDrawers(); + if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { + expandPanel(); } }); } @@ -387,12 +352,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { PreferenceUtil.getInstance(this).setIntroShown(); ChangelogDialog.setChangelogRead(this); blockRequestPermissions = true; - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - startActivityForResult(new Intent(MainActivity.this, AppIntroActivity.class), APP_INTRO_REQUEST); - } - }, 50); + new Handler().postDelayed(() -> startActivityForResult(new Intent(MainActivity.this, AppIntroActivity.class), APP_INTRO_REQUEST), 50); return true; } return false; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java index 8f4c498a..fce56862 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java @@ -103,14 +103,11 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme } else { recyclerViewDragDropManager = new RecyclerViewDragDropManager(); final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator(); - adapter = new OrderablePlaylistSongAdapter(this, new ArrayList(), R.layout.item_list, false, this, new OrderablePlaylistSongAdapter.OnMoveItemListener() { - @Override - public void onMoveItem(int fromPosition, int toPosition) { - if (PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, fromPosition, toPosition)) { - Song song = adapter.getDataSet().remove(fromPosition); - adapter.getDataSet().add(toPosition, song); - adapter.notifyItemMoved(fromPosition, toPosition); - } + adapter = new OrderablePlaylistSongAdapter(this, new ArrayList(), R.layout.item_list, false, this, (fromPosition, toPosition) -> { + if (PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, fromPosition, toPosition)) { + Song song = adapter.getDataSet().remove(fromPosition); + adapter.getDataSet().add(toPosition, song); + adapter.notifyItemMoved(fromPosition, toPosition); } }); wrappedAdapter = recyclerViewDragDropManager.createWrappedAdapter(adapter); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java index f96cb1be..453b02a5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java @@ -66,27 +66,21 @@ public class PurchaseActivity extends AbsBaseActivity implements BillingProcesso restoreButton.setEnabled(false); purchaseButton.setEnabled(false); - restoreButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (restorePurchaseAsyncTask == null || restorePurchaseAsyncTask.getStatus() != AsyncTask.Status.RUNNING) { - restorePurchase(); - } + restoreButton.setOnClickListener(v -> { + if (restorePurchaseAsyncTask == null || restorePurchaseAsyncTask.getStatus() != AsyncTask.Status.RUNNING) { + restorePurchase(); } }); - purchaseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - billingProcessor.purchase(PurchaseActivity.this, App.PRO_VERSION_PRODUCT_ID); + purchaseButton.setOnClickListener(v -> { + billingProcessor.purchase(PurchaseActivity.this, App.PRO_VERSION_PRODUCT_ID); - if (!BuildConfig.DEBUG) { - Answers.getInstance().logAddToCart(new AddToCartEvent() - .putCurrency(Currency.getInstance("EUR")) - .putItemId("pro_version") - .putItemName("Phonograph Pro") - .putItemPrice(BigDecimal.valueOf(3))); - } + if (!BuildConfig.DEBUG) { + Answers.getInstance().logAddToCart(new AddToCartEvent() + .putCurrency(Currency.getInstance("EUR")) + .putItemId("pro_version") + .putItemName("Phonograph Pro") + .putItemPrice(BigDecimal.valueOf(3))); } }); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java index 2947c15c..8cf0fff0 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java @@ -74,12 +74,9 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie }); recyclerView.setAdapter(adapter); - recyclerView.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - hideSoftKeyboard(); - return false; - } + recyclerView.setOnTouchListener((v, event) -> { + hideSoftKeyboard(); + return false; }); setUpToolBar(); @@ -133,12 +130,7 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie }); searchView.setQuery(query, false); - searchView.post(new Runnable() { - @Override - public void run() { - searchView.setOnQueryTextListener(SearchActivity.this); - } - }); + searchView.post(() -> searchView.setOnQueryTextListener(SearchActivity.this)); return super.onCreateOptionsMenu(menu); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java index 843140f3..9e843e24 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java @@ -188,83 +188,68 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia private void invalidateSettings() { final Preference defaultStartPage = findPreference("default_start_page"); setSummary(defaultStartPage); - defaultStartPage.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, @NonNull Object o) { - setSummary(defaultStartPage, o); - return true; - } + defaultStartPage.setOnPreferenceChangeListener((preference, o) -> { + setSummary(defaultStartPage, o); + return true; }); final Preference generalTheme = findPreference("general_theme"); setSummary(generalTheme); - generalTheme.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, @NonNull Object o) { - String themeName = (String) o; - if (themeName.equals("black") && !App.isProVersion()) { - Toast.makeText(getActivity(), R.string.black_theme_is_a_pro_feature, Toast.LENGTH_LONG).show(); - startActivity(new Intent(getContext(), PurchaseActivity.class)); - return false; - } - - int theme = PreferenceUtil.getThemeResFromPrefValue(themeName); - setSummary(generalTheme, o); - ThemeStore.editTheme(getActivity()) - .activityTheme(theme) - .commit(); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { - // Set the new theme so that updateAppShortcuts can pull it - getActivity().setTheme(PreferenceUtil.getThemeResFromPrefValue((String) o)); - new DynamicShortcutManager(getActivity()).updateDynamicShortcuts(); - } - - getActivity().recreate(); - return true; + generalTheme.setOnPreferenceChangeListener((preference, o) -> { + String themeName = (String) o; + if (themeName.equals("black") && !App.isProVersion()) { + Toast.makeText(getActivity(), R.string.black_theme_is_a_pro_feature, Toast.LENGTH_LONG).show(); + startActivity(new Intent(getContext(), PurchaseActivity.class)); + return false; } + + int theme = PreferenceUtil.getThemeResFromPrefValue(themeName); + setSummary(generalTheme, o); + ThemeStore.editTheme(getActivity()) + .activityTheme(theme) + .commit(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { + // Set the new theme so that updateAppShortcuts can pull it + getActivity().setTheme(PreferenceUtil.getThemeResFromPrefValue((String) o)); + new DynamicShortcutManager(getActivity()).updateDynamicShortcuts(); + } + + getActivity().recreate(); + return true; }); final Preference autoDownloadImagesPolicy = findPreference("auto_download_images_policy"); setSummary(autoDownloadImagesPolicy); - autoDownloadImagesPolicy.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, @NonNull Object o) { - setSummary(autoDownloadImagesPolicy, o); - return true; - } + autoDownloadImagesPolicy.setOnPreferenceChangeListener((preference, o) -> { + setSummary(autoDownloadImagesPolicy, o); + return true; }); final ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color"); final int primaryColor = ThemeStore.primaryColor(getActivity()); primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor)); - primaryColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(@NonNull Preference preference) { - new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.primary_color) - .accentMode(false) - .allowUserColorInput(true) - .allowUserColorInputAlpha(false) - .preselect(primaryColor) - .show(); - return true; - } + primaryColorPref.setOnPreferenceClickListener(preference -> { + new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.primary_color) + .accentMode(false) + .allowUserColorInput(true) + .allowUserColorInputAlpha(false) + .preselect(primaryColor) + .show(); + return true; }); final ATEColorPreference accentColorPref = (ATEColorPreference) findPreference("accent_color"); final int accentColor = ThemeStore.accentColor(getActivity()); accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor)); - accentColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(@NonNull Preference preference) { - new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.accent_color) - .accentMode(true) - .allowUserColorInput(true) - .allowUserColorInputAlpha(false) - .preselect(accentColor) - .show(); - return true; - } + accentColorPref.setOnPreferenceClickListener(preference -> { + new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.accent_color) + .accentMode(true) + .allowUserColorInput(true) + .allowUserColorInputAlpha(false) + .preselect(accentColor) + .show(); + return true; }); TwoStatePreference colorNavBar = (TwoStatePreference) findPreference("should_color_navigation_bar"); @@ -272,15 +257,12 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia colorNavBar.setVisible(false); } else { colorNavBar.setChecked(ThemeStore.coloredNavigationBar(getActivity())); - colorNavBar.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - ThemeStore.editTheme(getActivity()) - .coloredNavigationBar((Boolean) newValue) - .commit(); - getActivity().recreate(); - return true; - } + colorNavBar.setOnPreferenceChangeListener((preference, newValue) -> { + ThemeStore.editTheme(getActivity()) + .coloredNavigationBar((Boolean) newValue) + .commit(); + getActivity().recreate(); + return true; }); } @@ -289,13 +271,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia classicNotification.setVisible(false); } else { classicNotification.setChecked(PreferenceUtil.getInstance(getActivity()).classicNotification()); - classicNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - // Save preference - PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean) newValue); - return true; - } + classicNotification.setOnPreferenceChangeListener((preference, newValue) -> { + // Save preference + PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean) newValue); + return true; }); } @@ -304,13 +283,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia coloredNotification.setEnabled(PreferenceUtil.getInstance(getActivity()).classicNotification()); } else { coloredNotification.setChecked(PreferenceUtil.getInstance(getActivity()).coloredNotification()); - coloredNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - // Save preference - PreferenceUtil.getInstance(getActivity()).setColoredNotification((Boolean) newValue); - return true; - } + coloredNotification.setOnPreferenceChangeListener((preference, newValue) -> { + // Save preference + PreferenceUtil.getInstance(getActivity()).setColoredNotification((Boolean) newValue); + return true; }); } @@ -319,17 +295,14 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia colorAppShortcuts.setVisible(false); } else { colorAppShortcuts.setChecked(PreferenceUtil.getInstance(getActivity()).coloredAppShortcuts()); - colorAppShortcuts.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - // Save preference - PreferenceUtil.getInstance(getActivity()).setColoredAppShortcuts((Boolean) newValue); + colorAppShortcuts.setOnPreferenceChangeListener((preference, newValue) -> { + // Save preference + PreferenceUtil.getInstance(getActivity()).setColoredAppShortcuts((Boolean) newValue); - // Update app shortcuts - new DynamicShortcutManager(getActivity()).updateDynamicShortcuts(); + // Update app shortcuts + new DynamicShortcutManager(getActivity()).updateDynamicShortcuts(); - return true; - } + return true; }); } @@ -338,12 +311,9 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia equalizer.setEnabled(false); equalizer.setSummary(getResources().getString(R.string.no_equalizer)); } - equalizer.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - NavigationUtil.openEqualizer(getActivity()); - return true; - } + equalizer.setOnPreferenceClickListener(preference -> { + NavigationUtil.openEqualizer(getActivity()); + return true; }); updateNowPlayingScreenSummary(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java index c122e294..0f2682de 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java @@ -120,27 +120,19 @@ public abstract class AbsBaseActivity extends AbsThemeActivity { //User has deny from permission dialog Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(), Snackbar.LENGTH_INDEFINITE) - .setAction(R.string.action_grant, new View.OnClickListener() { - @Override - public void onClick(View view) { - requestPermissions(); - } - }) + .setAction(R.string.action_grant, view -> requestPermissions()) .setActionTextColor(ThemeStore.accentColor(this)) .show(); } else { // User has deny permission and checked never show permission dialog so you can redirect to Application settings page Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(), Snackbar.LENGTH_INDEFINITE) - .setAction(R.string.action_settings, new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(); - intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - Uri uri = Uri.fromParts("package", AbsBaseActivity.this.getPackageName(), null); - intent.setData(uri); - startActivity(intent); - } + .setAction(R.string.action_settings, view -> { + Intent intent = new Intent(); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + Uri uri = Uri.fromParts("package", AbsBaseActivity.this.getPackageName(), null); + intent.setData(uri); + startActivity(intent); }) .setActionTextColor(ThemeStore.accentColor(this)) .show(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java index 8515f888..ac3f0921 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java @@ -76,12 +76,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi miniPlayerFragment = (MiniPlayerFragment) getSupportFragmentManager().findFragmentById(R.id.mini_player_fragment); //noinspection ConstantConditions - miniPlayerFragment.getView().setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - expandPanel(); - } - }); + miniPlayerFragment.getView().setOnClickListener(v -> expandPanel()); slidingUpPanelLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override @@ -267,13 +262,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi .ofArgb(getWindow().getNavigationBarColor(), color) .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME); navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f)); - navigationBarColorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @TargetApi(Build.VERSION_CODES.LOLLIPOP) - @Override - public void onAnimationUpdate(ValueAnimator animation) { - AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()); - } - }); + navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue())); navigationBarColorAnimator.start(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/bugreport/BugReportActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/bugreport/BugReportActivity.java index 5c6dcbb7..69df1c4a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/bugreport/BugReportActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/bugreport/BugReportActivity.java @@ -170,31 +170,18 @@ public class BugReportActivity extends AbsThemeActivity { } }); - inputPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_SEND) { - reportIssue(); - return true; - } - return false; + inputPassword.setOnEditorActionListener((textView, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_SEND) { + reportIssue(); + return true; } + return false; }); - textDeviceInfo.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - copyDeviceInfoToClipBoard(); - } - }); + textDeviceInfo.setOnClickListener(v -> copyDeviceInfoToClipBoard()); TintHelper.setTintAuto(sendFab, accentColor, true); - sendFab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - reportIssue(); - } - }); + sendFab.setOnClickListener(v -> reportIssue()); TintHelper.setTintAuto(inputTitle, accentColor, false); TintHelper.setTintAuto(inputDescription, accentColor, false); @@ -392,19 +379,8 @@ public class BugReportActivity extends AbsThemeActivity { .title(R.string.bug_report_failed) .content(R.string.bug_report_failed_unknown) .positiveText(android.R.string.ok) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, - @NonNull DialogAction which) { - tryToFinishActivity(); - } - }) - .cancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - tryToFinishActivity(); - } - }) + .onPositive((dialog, which) -> tryToFinishActivity()) + .cancelListener(dialog -> tryToFinishActivity()) .show(); break; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java index ab0f4fd1..ed10d385 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java @@ -137,33 +137,25 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { getString(R.string.web_search), getString(R.string.remove_cover) }; - image.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new MaterialDialog.Builder(AbsTagEditorActivity.this) - .title(R.string.update_image) - .items(items) - .itemsCallback(new MaterialDialog.ListCallback() { - @Override - public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) { - switch (which) { - case 0: - getImageFromLastFM(); - break; - case 1: - startImagePicker(); - break; - case 2: - searchImageOnWeb(); - break; - case 3: - deleteImage(); - break; - } - } - }).show(); - } - }); + image.setOnClickListener(v -> new MaterialDialog.Builder(AbsTagEditorActivity.this) + .title(R.string.update_image) + .items(items) + .itemsCallback((dialog, view, which, text) -> { + switch (which) { + case 0: + getImageFromLastFM(); + break; + case 1: + startImagePicker(); + break; + case 2: + searchImageOnWeb(); + break; + case 3: + deleteImage(); + break; + } + }).show()); } private void startImagePicker() { @@ -184,12 +176,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { fab.setScaleX(0); fab.setScaleY(0); fab.setEnabled(false); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - save(); - } - }); + fab.setOnClickListener(v -> save()); TintHelper.setTintAuto(fab, ThemeStore.accentColor(this), true); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java index ca55831d..5e64ce83 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java @@ -298,42 +298,24 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi if (file.isDirectory()) { setCrumb(new BreadCrumbLayout.Crumb(file), true); } else { - FileFilter fileFilter = new FileFilter() { - @Override - public boolean accept(File pathname) { - return !pathname.isDirectory() && getFileFilter().accept(pathname); + FileFilter fileFilter = pathname -> !pathname.isDirectory() && getFileFilter().accept(pathname); + new ListSongsAsyncTask(getActivity(), file, (songs, extra) -> { + File file1 = (File) extra; + int startIndex = -1; + for (int i = 0; i < songs.size(); i++) { + if (file1.getPath().equals(songs.get(i).data)) { // path is already canonical here + startIndex = i; + break; + } } - }; - new ListSongsAsyncTask(getActivity(), file, new ListSongsAsyncTask.OnSongsListedCallback() { - @Override - public void onSongsListed(@NonNull ArrayList songs, Object extra) { - File file = (File) extra; - int startIndex = -1; - for (int i = 0; i < songs.size(); i++) { - if (file.getPath().equals(songs.get(i).data)) { // path is already canonical here - startIndex = i; - break; - } - } - if (startIndex > -1) { - MusicPlayerRemote.openQueue(songs, startIndex, true); - } else { - final File finalFile = file; - Snackbar.make(coordinatorLayout, Html.fromHtml(String.format(getString(R.string.not_listed_in_media_store), file.getName())), Snackbar.LENGTH_LONG) - .setAction(R.string.action_scan, new View.OnClickListener() { - @Override - public void onClick(View v) { - new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() { - @Override - public void onPathsListed(@Nullable String[] paths) { - scanPaths(paths); - } - }).execute(new ListPathsAsyncTask.LoadingInfo(finalFile, getFileFilter())); - } - }) - .setActionTextColor(ThemeStore.accentColor(getActivity())) - .show(); - } + if (startIndex > -1) { + MusicPlayerRemote.openQueue(songs, startIndex, true); + } else { + final File finalFile = file1; + Snackbar.make(coordinatorLayout, Html.fromHtml(String.format(getString(R.string.not_listed_in_media_store), file1.getName())), Snackbar.LENGTH_LONG) + .setAction(R.string.action_scan, v -> new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(finalFile, getFileFilter()))) + .setActionTextColor(ThemeStore.accentColor(getActivity())) + .show(); } }).execute(new ListSongsAsyncTask.LoadingInfo(toList(file.getParentFile()), fileFilter, getFileComparator())); } @@ -342,12 +324,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi @Override public void onMultipleItemAction(MenuItem item, ArrayList files) { final int itemId = item.getItemId(); - new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() { - @Override - public void onSongsListed(@NonNull ArrayList songs, Object extra) { - SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId); - } - }).execute(new ListSongsAsyncTask.LoadingInfo(files, getFileFilter(), getFileComparator())); + new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId)).execute(new ListSongsAsyncTask.LoadingInfo(files, getFileFilter(), getFileComparator())); } @Override @@ -355,73 +332,47 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi PopupMenu popupMenu = new PopupMenu(getActivity(), view); if (file.isDirectory()) { popupMenu.inflate(R.menu.menu_item_directory); - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - final int itemId = item.getItemId(); - switch (itemId) { - case R.id.action_play_next: - case R.id.action_add_to_current_playing: - case R.id.action_add_to_playlist: - case R.id.action_delete_from_device: - new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() { - @Override - public void onSongsListed(@NonNull ArrayList songs, Object extra) { - SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId); - } - }).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator())); - return true; - case R.id.action_set_as_start_directory: - PreferenceUtil.getInstance(getActivity()).setStartDirectory(file); - Toast.makeText(getActivity(), String.format(getString(R.string.new_start_directory), file.getPath()), Toast.LENGTH_SHORT).show(); - return true; - case R.id.action_scan: - new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() { - @Override - public void onPathsListed(@Nullable String[] paths) { - scanPaths(paths); - } - }).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter())); - return true; - } - return false; + popupMenu.setOnMenuItemClickListener(item -> { + final int itemId = item.getItemId(); + switch (itemId) { + case R.id.action_play_next: + case R.id.action_add_to_current_playing: + case R.id.action_add_to_playlist: + case R.id.action_delete_from_device: + new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId)).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator())); + return true; + case R.id.action_set_as_start_directory: + PreferenceUtil.getInstance(getActivity()).setStartDirectory(file); + Toast.makeText(getActivity(), String.format(getString(R.string.new_start_directory), file.getPath()), Toast.LENGTH_SHORT).show(); + return true; + case R.id.action_scan: + new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter())); + return true; } + return false; }); } else { popupMenu.inflate(R.menu.menu_item_file); - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - final int itemId = item.getItemId(); - switch (itemId) { - case R.id.action_play_next: - case R.id.action_add_to_current_playing: - case R.id.action_add_to_playlist: - case R.id.action_go_to_album: - case R.id.action_go_to_artist: - case R.id.action_share: - case R.id.action_tag_editor: - case R.id.action_details: - case R.id.action_set_as_ringtone: - case R.id.action_delete_from_device: - new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() { - @Override - public void onSongsListed(@NonNull ArrayList songs, Object extra) { - SongMenuHelper.handleMenuClick(getActivity(), songs.get(0), itemId); - } - }).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator())); - return true; - case R.id.action_scan: - new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() { - @Override - public void onPathsListed(@Nullable String[] paths) { - scanPaths(paths); - } - }).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter())); - return true; - } - return false; + popupMenu.setOnMenuItemClickListener(item -> { + final int itemId = item.getItemId(); + switch (itemId) { + case R.id.action_play_next: + case R.id.action_add_to_current_playing: + case R.id.action_add_to_playlist: + case R.id.action_go_to_album: + case R.id.action_go_to_artist: + case R.id.action_share: + case R.id.action_tag_editor: + case R.id.action_details: + case R.id.action_set_as_ringtone: + case R.id.action_delete_from_device: + new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongMenuHelper.handleMenuClick(getActivity(), songs.get(0), itemId)).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator())); + return true; + case R.id.action_scan: + new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter())); + return true; } + return false; }); } popupMenu.show(); @@ -433,17 +384,14 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi return files; } - Comparator fileComparator = new Comparator() { - @Override - public int compare(File lhs, File rhs) { - if (lhs.isDirectory() && !rhs.isDirectory()) { - return -1; - } else if (!lhs.isDirectory() && rhs.isDirectory()) { - return 1; - } else { - return lhs.getName().compareToIgnoreCase - (rhs.getName()); - } + Comparator fileComparator = (lhs, rhs) -> { + if (lhs.isDirectory() && !rhs.isDirectory()) { + return -1; + } else if (!lhs.isDirectory() && rhs.isDirectory()) { + return 1; + } else { + return lhs.getName().compareToIgnoreCase + (rhs.getName()); } }; @@ -451,14 +399,9 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi return fileComparator; } - FileFilter audioFileFilter = new FileFilter() { - @Override - public boolean accept(File file) { - return !file.isHidden() && (file.isDirectory() || - FileUtil.fileIsMimeType(file, "audio/*", MimeTypeMap.getSingleton()) || - FileUtil.fileIsMimeType(file, "application/ogg", MimeTypeMap.getSingleton())); - } - }; + FileFilter audioFileFilter = file -> !file.isHidden() && (file.isDirectory() || + FileUtil.fileIsMimeType(file, "audio/*", MimeTypeMap.getSingleton()) || + FileUtil.fileIsMimeType(file, "application/ogg", MimeTypeMap.getSingleton())); private FileFilter getFileFilter() { return audioFileFilter; @@ -722,25 +665,10 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi .title(R.string.listing_files) .progress(true, 0) .progressIndeterminateStyle(true) - .cancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - cancel(false); - } - }) - .dismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - cancel(false); - } - }) + .cancelListener(dialog -> cancel(false)) + .dismissListener(dialog -> cancel(false)) .negativeText(android.R.string.cancel) - .onNegative(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - cancel(false); - } - }) + .onNegative((dialog, which) -> cancel(false)) .show(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java index a519aafe..dd0c8b02 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java @@ -113,12 +113,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen setToolbarShown(false); - toolbar.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() { - @Override - public void run() { - toolbar.setVisibility(View.GONE); - } - }); + toolbar.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> toolbar.setVisibility(View.GONE)); } protected void toggleToolbar(@Nullable final View toolbar) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index 4b14bbfa..92ff5792 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -167,18 +167,13 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements favoriteIcon.setVisibility(View.INVISIBLE); } }) - .withEndAction(new Runnable() { - @Override - public void run() { - favoriteIcon.animate() - .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME / 2) - .setInterpolator(new AccelerateInterpolator()) - .scaleX(0f) - .scaleY(0f) - .alpha(0f) - .start(); - } - }) + .withEndAction(() -> favoriteIcon.animate() + .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME / 2) + .setInterpolator(new AccelerateInterpolator()) + .scaleX(0f) + .scaleY(0f) + .alpha(0f) + .start()) .start(); } @@ -191,14 +186,11 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements } private void hideLyricsLayout() { - lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() { - @Override - public void run() { - if (!isLyricsLayoutBound()) return; - lyricsLayout.setVisibility(View.GONE); - lyricsLine1.setText(null); - lyricsLine2.setText(null); - } + lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> { + if (!isLyricsLayoutBound()) return; + lyricsLayout.setVisibility(View.GONE); + lyricsLine1.setText(null); + lyricsLine2.setText(null); }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java index a9dcc45b..3ef56ad8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -234,12 +234,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private void setUpPlayerToolbar() { toolbar.inflateMenu(R.menu.menu_player); toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp); - toolbar.setNavigationOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - getActivity().onBackPressed(); - } - }); + toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed()); toolbar.setOnMenuItemClickListener(this); } @@ -521,15 +516,12 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum currentSongViewHolder.image.setScaleType(ImageView.ScaleType.CENTER); currentSongViewHolder.image.setColorFilter(ATHUtil.resolveColor(fragment.getActivity(), R.attr.iconColor, ThemeStore.textColorSecondary(fragment.getActivity())), PorterDuff.Mode.SRC_IN); currentSongViewHolder.image.setImageResource(R.drawable.ic_volume_up_white_24dp); - currentSongViewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - // toggle the panel - if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { - fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); - } else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { - fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); - } + currentSongViewHolder.itemView.setOnClickListener(v -> { + // toggle the panel + if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { + fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); + } else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { + fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } }); currentSongViewHolder.menu.setOnClickListener(new SongMenuHelper.OnClickSongMenu((AppCompatActivity) fragment.getActivity()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java index 70b90534..44b66859 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerPlaybackControlsFragment.java @@ -145,13 +145,10 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN); playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler()); - playPauseFab.post(new Runnable() { - @Override - public void run() { - if (playPauseFab != null) { - playPauseFab.setPivotX(playPauseFab.getWidth() / 2); - playPauseFab.setPivotY(playPauseFab.getHeight() / 2); - } + playPauseFab.post(() -> { + if (playPauseFab != null) { + playPauseFab.setPivotX(playPauseFab.getWidth() / 2); + playPauseFab.setPivotY(playPauseFab.getHeight() / 2); } }); } @@ -174,18 +171,8 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment private void setUpPrevNext() { updatePrevNextColor(); - nextButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.playNextSong(); - } - }); - prevButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.back(); - } - }); + nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong()); + prevButton.setOnClickListener(v -> MusicPlayerRemote.back()); } private void updateProgressTextColor() { @@ -200,12 +187,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpShuffleButton() { - shuffleButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.toggleShuffleMode(); - } - }); + shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode()); } private void updateShuffleState() { @@ -220,12 +202,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpRepeatButton() { - repeatButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.cycleRepeatMode(); - } - }); + repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode()); } private void updateRepeatState() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java index 5ad4e176..4b0db653 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java @@ -229,12 +229,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private void setUpPlayerToolbar() { toolbar.inflateMenu(R.menu.menu_player); toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp); - toolbar.setNavigationOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - getActivity().onBackPressed(); - } - }); + toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed()); toolbar.setOnMenuItemClickListener(this); } @@ -500,15 +495,12 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum currentSongViewHolder.image.setScaleType(ImageView.ScaleType.CENTER); currentSongViewHolder.image.setColorFilter(ATHUtil.resolveColor(fragment.getActivity(), R.attr.iconColor, ThemeStore.textColorSecondary(fragment.getActivity())), PorterDuff.Mode.SRC_IN); currentSongViewHolder.image.setImageResource(R.drawable.ic_volume_up_white_24dp); - currentSongViewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - // toggle the panel - if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { - fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); - } else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { - fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); - } + currentSongViewHolder.itemView.setOnClickListener(v -> { + // toggle the panel + if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { + fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); + } else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { + fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } }); currentSongViewHolder.menu.setOnClickListener(new SongMenuHelper.OnClickSongMenu((AppCompatActivity) fragment.getActivity()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java index e3bdf379..c28d8fa5 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerPlaybackControlsFragment.java @@ -150,13 +150,10 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment playPauseButton.setImageDrawable(playPauseDrawable); updatePlayPauseColor(); playPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler()); - playPauseButton.post(new Runnable() { - @Override - public void run() { - if (playPauseButton != null) { - playPauseButton.setPivotX(playPauseButton.getWidth() / 2); - playPauseButton.setPivotY(playPauseButton.getHeight() / 2); - } + playPauseButton.post(() -> { + if (playPauseButton != null) { + playPauseButton.setPivotX(playPauseButton.getWidth() / 2); + playPauseButton.setPivotY(playPauseButton.getHeight() / 2); } }); } @@ -179,18 +176,8 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment private void setUpPrevNext() { updatePrevNextColor(); - nextButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.playNextSong(); - } - }); - prevButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.back(); - } - }); + nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong()); + prevButton.setOnClickListener(v -> MusicPlayerRemote.back()); } private void updateProgressTextColor() { @@ -209,12 +196,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpShuffleButton() { - shuffleButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.toggleShuffleMode(); - } - }); + shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode()); } private void updateShuffleState() { @@ -229,12 +211,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment } private void setUpRepeatButton() { - repeatButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MusicPlayerRemote.cycleRepeatMode(); - } - }); + repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode()); } private void updateRepeatState() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 710284b3..869a3323 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -318,14 +318,11 @@ public class MusicUtil { patterns.add(Pattern.compile(String.format(format, filename), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)); patterns.add(Pattern.compile(String.format(format, songtitle), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)); - File[] files = dir.listFiles(new FileFilter() { - @Override - public boolean accept(File f) { - for (Pattern pattern : patterns) { - if (pattern.matcher(f.getName()).matches()) return true; - } - return false; + File[] files = dir.listFiles(f -> { + for (Pattern pattern : patterns) { + if (pattern.matcher(f.getName()).matches()) return true; } + return false; }); if (files != null && files.length > 0) {