diff --git a/app/build.gradle b/app/build.gradle index 5f306e7b..e4379ad6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -126,7 +126,7 @@ dependencies { def retrofit_version = '2.9.0' implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-gson:$retrofit_version" - implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.2' + implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.3' def material_dialog_version = "3.3.0" implementation "com.afollestad.material-dialogs:core:$material_dialog_version" diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsBaseActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsBaseActivity.kt index 3b929728..2106fcae 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsBaseActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsBaseActivity.kt @@ -132,7 +132,7 @@ abstract class AbsBaseActivity : AbsThemeActivity() { permissionDeniedMessage!!, Snackbar.LENGTH_INDEFINITE ) - .setAction(code.name.monkey.retromusic.R.string.action_grant) { requestPermissions() } + .setAction(R.string.action_grant) { 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 @@ -140,7 +140,7 @@ abstract class AbsBaseActivity : AbsThemeActivity() { snackBarContainer, permissionDeniedMessage!!, Snackbar.LENGTH_INDEFINITE - ).setAction(code.name.monkey.retromusic.R.string.action_settings) { + ).setAction(R.string.action_settings) { val intent = Intent() intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS val uri = Uri.fromParts( diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt index 88292265..3e84aee4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt @@ -14,7 +14,6 @@ */ package code.name.monkey.retromusic.adapter -import android.os.Handler import android.os.SystemClock import android.view.LayoutInflater import android.view.View @@ -25,8 +24,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatTextView import androidx.core.os.bundleOf import androidx.fragment.app.findFragment -import androidx.lifecycle.findViewTreeLifecycleOwner -import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.recyclerview.widget.GridLayoutManager @@ -49,7 +46,6 @@ import code.name.monkey.retromusic.interfaces.IGenreClickListener import code.name.monkey.retromusic.model.* import code.name.monkey.retromusic.util.PreferenceUtil import com.google.android.material.card.MaterialCardView -import kotlinx.coroutines.delay class HomeAdapter( private val activity: AppCompatActivity @@ -204,7 +200,7 @@ class HomeAdapter( if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){ return@setOnClickListener } - mLastClickTime = SystemClock.elapsedRealtime(); + mLastClickTime = SystemClock.elapsedRealtime() MusicPlayerRemote.playNext((home.arrayList as List).subList(0, 8)) if (!MusicPlayerRemote.isPlaying) { MusicPlayerRemote.playNextSong() diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index e7849a0b..b1f38054 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -27,13 +27,13 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.MainActivity import code.name.monkey.retromusic.fragments.AlbumCoverStyle import code.name.monkey.retromusic.fragments.NowPlayingScreen.* +import code.name.monkey.retromusic.fragments.base.goToLyrics import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.misc.CustomFragmentStatePagerAdapter import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED @@ -127,7 +127,8 @@ class AlbumCoverPagerAdapter( setTitle(song.title) setMessage(if (data.isNullOrEmpty()) "No lyrics found" else data) setNegativeButton(R.string.synced_lyrics) { _, _ -> - NavigationUtil.goToLyrics(requireActivity()) + + goToLyrics(requireActivity()) } show() } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt index 506eb1c1..6495e674 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlayingQueueAdapter.kt @@ -188,7 +188,7 @@ class PlayingQueueAdapter( private const val UP_NEXT = 2 } - override fun onSwipeItem(holder: ViewHolder, position: Int, result: Int): SwipeResultAction? { + override fun onSwipeItem(holder: ViewHolder, position: Int, result: Int): SwipeResultAction { return if (result == SwipeableItemConstants.RESULT_CANCELED) { SwipeResultActionDefault() } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt index 4855f22e..d0976042 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt @@ -42,6 +42,6 @@ class LastAddedShortcutType(context: Context) : BaseShortcutType(context) { companion object { val id: String - get() = BaseShortcutType.ID_PREFIX + "last_added" + get() = ID_PREFIX + "last_added" } } diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt index ab814f4a..e5f911d8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt @@ -40,6 +40,6 @@ class TopTracksShortcutType(context: Context) : BaseShortcutType(context) { companion object { val id: String - get() = BaseShortcutType.ID_PREFIX + "top_tracks" + get() = ID_PREFIX + "top_tracks" } } diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt index be426f5d..8cf54daa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt @@ -62,7 +62,7 @@ class AppWidgetBig : BaseAppWidget() { context, R.drawable.ic_skip_next, MaterialValueHelper.getPrimaryTextColor(context, false) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -71,16 +71,16 @@ class AppWidgetBig : BaseAppWidget() { context, R.drawable.ic_skip_previous, MaterialValueHelper.getPrimaryTextColor(context, false) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( - R.id.button_toggle_play_pause, BaseAppWidget.createBitmap( + R.id.button_toggle_play_pause, createBitmap( RetroUtil.getTintedVectorDrawable( context, R.drawable.ic_play_arrow_white_32dp, MaterialValueHelper.getPrimaryTextColor(context, false) - )!!, 1f + ), 1f ) ) @@ -127,7 +127,7 @@ class AppWidgetBig : BaseAppWidget() { service, playPauseRes, primaryColor - )!!, 1f + ), 1f ) ) @@ -138,7 +138,7 @@ class AppWidgetBig : BaseAppWidget() { service, R.drawable.ic_skip_next, primaryColor - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -147,7 +147,7 @@ class AppWidgetBig : BaseAppWidget() { service, R.drawable.ic_skip_previous, primaryColor - )!!, 1f + ), 1f ) ) @@ -156,7 +156,7 @@ class AppWidgetBig : BaseAppWidget() { // Load the album cover async and push the update on completion val p = RetroUtil.getScreenSize(service) - val widgetImageSize = Math.min(p.x, p.y) + val widgetImageSize = p.x.coerceAtMost(p.y) val appContext = service.applicationContext service.runOnUiThread { if (target != null) { diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt index e693fc53..b1ba4800 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt @@ -60,7 +60,7 @@ class AppWidgetCard : BaseAppWidget() { context, R.drawable.ic_skip_next, secondaryColor - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -69,7 +69,7 @@ class AppWidgetCard : BaseAppWidget() { context, R.drawable.ic_skip_previous, secondaryColor - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -78,7 +78,7 @@ class AppWidgetCard : BaseAppWidget() { context, R.drawable.ic_play_arrow_white_32dp, secondaryColor - )!!, 1f + ), 1f ) ) @@ -113,7 +113,7 @@ class AppWidgetCard : BaseAppWidget() { service, playPauseRes, MaterialValueHelper.getSecondaryTextColor(service, true) - )!!, 1f + ), 1f ) ) @@ -124,7 +124,7 @@ class AppWidgetCard : BaseAppWidget() { service, R.drawable.ic_skip_next, MaterialValueHelper.getSecondaryTextColor(service, true) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -133,7 +133,7 @@ class AppWidgetCard : BaseAppWidget() { service, R.drawable.ic_skip_previous, MaterialValueHelper.getSecondaryTextColor(service, true) - )!!, 1f + ), 1f ) ) diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt index bfe368ba..b0740a3a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt @@ -61,7 +61,7 @@ class AppWidgetClassic : BaseAppWidget() { context, R.drawable.ic_skip_next, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -71,7 +71,7 @@ class AppWidgetClassic : BaseAppWidget() { context, R.drawable.ic_skip_previous, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -81,7 +81,7 @@ class AppWidgetClassic : BaseAppWidget() { context, R.drawable.ic_play_arrow_white_32dp, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt index 089c38bf..073691ef 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt @@ -59,7 +59,7 @@ class AppWidgetSmall : BaseAppWidget() { context, R.drawable.ic_skip_next, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -69,7 +69,7 @@ class AppWidgetSmall : BaseAppWidget() { context, R.drawable.ic_skip_previous, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -79,7 +79,7 @@ class AppWidgetSmall : BaseAppWidget() { context, R.drawable.ic_play_arrow_white_32dp, MaterialValueHelper.getSecondaryTextColor(context, true) - )!!, 1f + ), 1f ) ) @@ -161,7 +161,7 @@ class AppWidgetSmall : BaseAppWidget() { R.id.button_toggle_play_pause, createBitmap( RetroUtil.getTintedVectorDrawable( service, playPauseRes, color - )!!, 1f + ), 1f ) ) @@ -170,14 +170,14 @@ class AppWidgetSmall : BaseAppWidget() { R.id.button_next, createBitmap( RetroUtil.getTintedVectorDrawable( service, R.drawable.ic_skip_next, color - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( R.id.button_prev, createBitmap( RetroUtil.getTintedVectorDrawable( service, R.drawable.ic_skip_previous, color - )!!, 1f + ), 1f ) ) diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt index 6a81d629..248e53ea 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetText.kt @@ -18,7 +18,6 @@ import android.app.PendingIntent import android.content.ComponentName import android.content.Context import android.content.Intent -import android.provider.MediaStore import android.text.TextUtils import android.view.View import android.widget.RemoteViews @@ -43,7 +42,7 @@ class AppWidgetText : BaseAppWidget() { context, R.drawable.ic_skip_next, ContextCompat.getColor( context, R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -52,7 +51,7 @@ class AppWidgetText : BaseAppWidget() { context, R.drawable.ic_skip_previous, ContextCompat.getColor( context, R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -61,7 +60,7 @@ class AppWidgetText : BaseAppWidget() { context, R.drawable.ic_play_arrow_white_32dp, ContextCompat.getColor( context, R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) @@ -137,7 +136,7 @@ class AppWidgetText : BaseAppWidget() { App.getContext(), playPauseRes, ContextCompat.getColor( App.getContext(), R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -148,7 +147,7 @@ class AppWidgetText : BaseAppWidget() { ContextCompat.getColor( App.getContext(), R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) appWidgetView.setImageViewBitmap( @@ -159,7 +158,7 @@ class AppWidgetText : BaseAppWidget() { ContextCompat.getColor( App.getContext(), R.color.md_white_1000 ) - )!!, 1f + ), 1f ) ) diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.kt b/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.kt index 2c747a32..426fdcb9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.kt @@ -11,6 +11,7 @@ import com.google.android.gms.cast.MediaInfo.STREAM_TYPE_BUFFERED import com.google.android.gms.cast.MediaMetadata.* import com.google.android.gms.cast.framework.CastSession import com.google.android.gms.common.images.WebImage +import org.json.JSONObject import java.net.MalformedURLException import java.net.URL @@ -41,7 +42,7 @@ object CastHelper { position, MediaStatus.REPEAT_MODE_REPEAT_OFF, progress, - null + JSONObject() ) } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedControlsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedControlsActivity.kt index 1525bdd1..a9c7b393 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedControlsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedControlsActivity.kt @@ -13,7 +13,7 @@ class ExpandedControlsActivity : ExpandedControllerActivity() { override fun onCreateOptionsMenu(menu: Menu?): Boolean { super.onCreateOptionsMenu(menu) menuInflater.inflate(R.menu.menu_cast, menu) - CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.action_cast) + CastButtonFactory.setUpMediaRouteButton(this, menu!!, R.id.action_cast) return true } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt b/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt index e460f48b..faee38b2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt @@ -17,7 +17,7 @@ class RetroWebServer(val context: Context) : NanoHTTPD(SERVER_PORT) { const val PART_COVER_ART = "coverart" const val PART_SONG = "song" const val PARAM_ID = "id" - var mRetroWebServer: RetroWebServer? = null + private var mRetroWebServer: RetroWebServer? = null fun getInstance(context: Context): RetroWebServer { if (mRetroWebServer == null) { mRetroWebServer = RetroWebServer(context) diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt index 924a89b6..3cc867b7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt @@ -139,7 +139,7 @@ class DeleteSongsDialog : DialogFragment() { } } - fun reloadTabs() { + private fun reloadTabs() { libraryViewModel.forceReload(ReloadType.Songs) libraryViewModel.forceReload(ReloadType.HomeSections) libraryViewModel.forceReload(ReloadType.Artists) diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/PaletteExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/PaletteExtensions.kt index 58a63195..dae607bf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/PaletteExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/PaletteExtensions.kt @@ -78,7 +78,7 @@ fun isBlack(fArr: FloatArray): Boolean { fun isNearRedLine(fArr: FloatArray): Boolean { val f = fArr[0] - return f >= 10.0f && f <= 37.0f && fArr[1] <= 0.82f + return f in 10.0f..37.0f && fArr[1] <= 0.82f } fun isDark(@ColorInt i: Int): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index a021fe70..d5787a4c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -43,7 +43,7 @@ class LibraryViewModel( private val legacyPlaylists = MutableLiveData>() private val genres = MutableLiveData>() private val searchResults = MutableLiveData>() - private val fabMargin = MutableLiveData(0) + private val fabMargin = MutableLiveData(0) val paletteColor: LiveData = _paletteColor init { @@ -227,7 +227,7 @@ class LibraryViewModel( repository.deleteRoomPlaylist(playlists) } - suspend fun albumById(id: Long) = repository.albumById(id) + fun albumById(id: Long) = repository.albumById(id) suspend fun artistById(id: Long) = repository.artistById(id) suspend fun favoritePlaylist() = repository.favoritePlaylist() suspend fun isFavoriteSong(song: SongEntity) = repository.isFavoriteSong(song) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt index 5075ca1a..04a6a266 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt @@ -405,9 +405,8 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det binding.albumCoverContainer, "${getString(R.string.transition_album_art)}_${album.id}" ) - startActivityForResult( - intent, - TAG_EDITOR_REQUEST, options.toBundle() + startActivity( + intent, options.toBundle() ) return true } @@ -499,8 +498,4 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det super.onDestroyView() _binding = null } - - companion object { - const val TAG_EDITOR_REQUEST = 9002 - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt index 11e8a7f0..d2e3e773 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt @@ -70,7 +70,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC } private fun checkIsEmpty() { - val isEmpty = backupAdapter!!.itemCount == 0 + val isEmpty = backupAdapter?.itemCount == 0 binding.backupTitle.isVisible = !isEmpty binding.backupRecyclerview.isVisible = !isEmpty } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt index ed8bab54..8eca0382 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt @@ -41,7 +41,6 @@ import code.name.monkey.retromusic.adapter.StorageAdapter import code.name.monkey.retromusic.adapter.StorageClickListener import code.name.monkey.retromusic.databinding.FragmentFolderBinding import code.name.monkey.retromusic.extensions.drawNextToNavbar -import code.name.monkey.retromusic.extensions.navigate import code.name.monkey.retromusic.extensions.surfaceColor import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.fragments.folder.FoldersFragment.ListPathsAsyncTask.OnPathsListedCallback @@ -725,9 +724,10 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), } - abstract class ListingFilesDialogAsyncTask : - DialogAsyncTask { - internal constructor(context: Context?) : super(context) + abstract class ListingFilesDialogAsyncTask internal constructor( + context: Context? + ) : + DialogAsyncTask(context) { override fun createDialog(context: Context): Dialog { return MaterialAlertDialogBuilder(context) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt index 8b5295e5..3af15404 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/MiniPlayerFragment.kt @@ -162,30 +162,26 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_p class FlingPlayBackController(context: Context) : View.OnTouchListener { - private var flingPlayBackController: GestureDetector - - init { - flingPlayBackController = GestureDetector(context, - object : GestureDetector.SimpleOnGestureListener() { - override fun onFling( - e1: MotionEvent, - e2: MotionEvent, - velocityX: Float, - velocityY: Float - ): Boolean { - if (abs(velocityX) > abs(velocityY)) { - if (velocityX < 0) { - MusicPlayerRemote.playNextSong() - return true - } else if (velocityX > 0) { - MusicPlayerRemote.playPreviousSong() - return true - } + private var flingPlayBackController = GestureDetector(context, + object : GestureDetector.SimpleOnGestureListener() { + override fun onFling( + e1: MotionEvent, + e2: MotionEvent, + velocityX: Float, + velocityY: Float + ): Boolean { + if (abs(velocityX) > abs(velocityY)) { + if (velocityX < 0) { + MusicPlayerRemote.playNextSong() + return true + } else if (velocityX > 0) { + MusicPlayerRemote.playPreviousSong() + return true } - return false } - }) - } + return false + } + }) @SuppressLint("ClickableViewAccessibility") override fun onTouch(v: View, event: MotionEvent): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index 876f1688..bce83d76 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -32,6 +32,7 @@ import code.name.monkey.retromusic.databinding.FragmentPlayerAlbumCoverBinding import code.name.monkey.retromusic.fragments.NowPlayingScreen.* import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment +import code.name.monkey.retromusic.fragments.base.goToLyrics import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics @@ -39,7 +40,6 @@ import code.name.monkey.retromusic.model.lyrics.Lyrics import code.name.monkey.retromusic.transform.CarousalPagerTransformer import code.name.monkey.retromusic.transform.ParallaxPagerTransformer import code.name.monkey.retromusic.util.LyricUtil -import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.coroutines.Dispatchers @@ -214,7 +214,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_playe } // Go to lyrics activity when clicked lyrics binding.playerLyricsLine2.setOnClickListener { - NavigationUtil.goToLyrics(requireActivity()) + goToLyrics(requireActivity()) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt index 4d9826a3..0d934398 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt @@ -63,7 +63,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player), private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper private var audioVolumeObserver: AudioVolumeObserver? = null - private val audioManager: AudioManager? + private val audioManager: AudioManager get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager private var _binding: FragmentCirclePlayerBinding? = null @@ -239,7 +239,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player), override fun onProgressChanged(seekArc: SeekArc?, progress: Int, fromUser: Boolean) { val audioManager = audioManager - audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0) + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0) } override fun onStartTrackingTouch(seekArc: SeekArc?) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt index 78b84e5d..f0d5c696 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt @@ -247,7 +247,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player updateQueue() } - override fun playerToolbar(): Toolbar? { + override fun playerToolbar(): Toolbar { return binding.playerToolbar } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index 9dbfd766..968794db 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -316,7 +316,7 @@ class FullPlaybackControlsFragment : fun updateIsFavorite(animate: Boolean = false) { lifecycleScope.launch(Dispatchers.IO) { - val playlist: PlaylistEntity? = libraryViewModel.favoritePlaylist() + val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist() if (playlist != null) { val song: SongEntity = MusicPlayerRemote.currentSong.toSongEntity(playlist.playListId) @@ -327,7 +327,7 @@ class FullPlaybackControlsFragment : } else { if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border } - val drawable: Drawable? = RetroUtil.getTintedVectorDrawable( + val drawable: Drawable = RetroUtil.getTintedVectorDrawable( requireContext(), icon, Color.WHITE @@ -347,7 +347,7 @@ class FullPlaybackControlsFragment : private fun toggleFavorite(song: Song) { lifecycleScope.launch(Dispatchers.IO) { - val playlist: PlaylistEntity? = libraryViewModel.favoritePlaylist() + val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist() if (playlist != null) { val songEntity = song.toSongEntity(playlist.playListId) val isFavorite = libraryViewModel.isFavoriteSong(songEntity).isNotEmpty() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt index ed0c3dca..82f0c876 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt @@ -281,7 +281,7 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play private fun updateIsFavoriteIcon(animate: Boolean = false) { lifecycleScope.launch(Dispatchers.IO) { - val playlist: PlaylistEntity? = libraryViewModel.favoritePlaylist() + val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist() if (playlist != null) { val song: SongEntity = MusicPlayerRemote.currentSong.toSongEntity(playlist.playListId) diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/M3UWriter.kt b/app/src/main/java/code/name/monkey/retromusic/helper/M3UWriter.kt index c834b9a5..f6044b2d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/M3UWriter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/M3UWriter.kt @@ -26,7 +26,7 @@ object M3UWriter : M3UConstants { fun write( dir: File, playlist: Playlist - ): File? { + ): File { if (!dir.exists()) dir.mkdirs() val file = File(dir, playlist.name + "." + M3UConstants.EXTENSION) val songs = playlist.getSongs() diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/MusicProgressViewUpdateHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/MusicProgressViewUpdateHelper.kt index 9cd2f3a9..2e6aefef 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/MusicProgressViewUpdateHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/MusicProgressViewUpdateHelper.kt @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.helper import android.os.Handler import android.os.Message +import kotlin.math.max class MusicProgressViewUpdateHelper : Handler { @@ -62,7 +63,7 @@ class MusicProgressViewUpdateHelper : Handler { val remainingMillis = intervalPlaying - progressMillis % intervalPlaying - return Math.max(MIN_INTERVAL, remainingMillis) + return max(MIN_INTERVAL, remainingMillis) } private fun queueNextRefresh(delay: Long) { diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/SortOrder.kt b/app/src/main/java/code/name/monkey/retromusic/helper/SortOrder.kt index 7c7d68e2..6c5b8a69 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/SortOrder.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/SortOrder.kt @@ -134,7 +134,7 @@ class SortOrder { companion object { /* Artist song sort order A-Z */ - const val SONG_A_Z = MediaStore.Audio.Media.DEFAULT_SORT_ORDER + private const val SONG_A_Z = MediaStore.Audio.Media.DEFAULT_SORT_ORDER /* Artist song sort order Z-A */ const val SONG_Z_A = "$SONG_A_Z DESC" diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/StackBlur.java b/app/src/main/java/code/name/monkey/retromusic/helper/StackBlur.java index 91370fe8..9c100da9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/StackBlur.java +++ b/app/src/main/java/code/name/monkey/retromusic/helper/StackBlur.java @@ -76,8 +76,8 @@ public class StackBlur { original.getPixels(currentPixels, 0, w, 0, 0, w, h); int cores = EXECUTOR_THREADS; - ArrayList horizontal = new ArrayList(cores); - ArrayList vertical = new ArrayList(cores); + ArrayList horizontal = new ArrayList<>(cores); + ArrayList vertical = new ArrayList<>(cores); for (int i = 0; i < cores; i++) { horizontal.add(new BlurTask(currentPixels, w, h, (int) radius, cores, i, 1)); vertical.add(new BlurTask(currentPixels, w, h, (int) radius, cores, i, 2)); @@ -158,7 +158,7 @@ public class StackBlur { for (x = 0; x < w; x++) { src[dst_i] = (int) - ((src[dst_i] & 0xFFFFFFFF) + ((src[dst_i]) | ((((sum_r * mul_sum) >>> shr_sum) & 0xff) << 16) | ((((sum_g * mul_sum) >>> shr_sum) & 0xff) << 8) | ((((sum_b * mul_sum) >>> shr_sum) & 0xff))); @@ -245,7 +245,7 @@ public class StackBlur { for (y = 0; y < h; y++) { src[dst_i] = (int) - ((src[dst_i] & 0xFFFFFFFF) + ((src[dst_i]) | ((((sum_r * mul_sum) >>> shr_sum) & 0xff) << 16) | ((((sum_g * mul_sum) >>> shr_sum) & 0xff) << 8) | ((((sum_b * mul_sum) >>> shr_sum) & 0xff))); diff --git a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java b/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java deleted file mode 100644 index 9770a9f4..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcHelper.java +++ /dev/null @@ -1,138 +0,0 @@ -package code.name.monkey.retromusic.lyrics; - -import android.content.Context; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Desc : 歌词解析 Author : Lauzy Date : 2017/10/13 Blog : http://www.jianshu.com/u/e76853f863a9 Email : - * freedompaladin@gmail.com - */ -public class LrcHelper { - - private static final String CHARSET = "utf-8"; - // [03:56.00][03:18.00][02:06.00][01:07.00]原谅我这一生不羁放纵爱自由 - private static final String LINE_REGEX = "((\\[\\d{2}:\\d{2}\\.\\d{2}])+)(.*)"; - private static final String TIME_REGEX = "\\[(\\d{2}):(\\d{2})\\.(\\d{2})]"; - - public static List parseLrcFromAssets(Context context, String fileName) { - try { - return parseInputStream(context.getResources().getAssets().open(fileName)); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - public static List parseLrcFromFile(File file) { - try { - return parseInputStream(new FileInputStream(file)); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return null; - } - - private static List parseInputStream(InputStream inputStream) { - List lrcs = new ArrayList<>(); - InputStreamReader isr = null; - BufferedReader br = null; - try { - isr = new InputStreamReader(inputStream, CHARSET); - br = new BufferedReader(isr); - String line; - while ((line = br.readLine()) != null) { - List lrcList = parseLrc(line); - if (lrcList != null && lrcList.size() != 0) { - lrcs.addAll(lrcList); - } - } - sortLrcs(lrcs); - return lrcs; - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - if (isr != null) { - isr.close(); - } - if (br != null) { - br.close(); - } - } catch (IOException e1) { - e1.printStackTrace(); - } - } - return lrcs; - } - - private static void sortLrcs(List lrcs) { - Collections.sort( - lrcs, - new Comparator() { - @Override - public int compare(Lrc o1, Lrc o2) { - return (int) (o1.getTime() - o2.getTime()); - } - }); - } - - private static List parseLrc(String lrcLine) { - if (lrcLine.trim().isEmpty()) { - return null; - } - List lrcs = new ArrayList<>(); - Matcher matcher = Pattern.compile(LINE_REGEX).matcher(lrcLine); - if (!matcher.matches()) { - return null; - } - - String time = matcher.group(1); - String content = matcher.group(3); - Matcher timeMatcher = Pattern.compile(TIME_REGEX).matcher(time); - - while (timeMatcher.find()) { - String min = timeMatcher.group(1); - String sec = timeMatcher.group(2); - String mil = timeMatcher.group(3); - Lrc lrc = new Lrc(); - if (content != null && content.length() != 0) { - lrc.setTime( - Long.parseLong(min) * 60 * 1000 - + Long.parseLong(sec) * 1000 - + Long.parseLong(mil) * 10); - lrc.setText(content); - lrcs.add(lrc); - } - } - return lrcs; - } - - public static String formatTime(long time) { - int min = (int) (time / 60000); - int sec = (int) (time / 1000 % 60); - return adjustFormat(min) + ":" + adjustFormat(sec); - } - - private static String adjustFormat(int time) { - if (time < 10) { - return "0" + time; - } - return time + ""; - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/misc/CustomFragmentStatePagerAdapter.java b/app/src/main/java/code/name/monkey/retromusic/misc/CustomFragmentStatePagerAdapter.java index 50ce6119..9ee76bb0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/misc/CustomFragmentStatePagerAdapter.java +++ b/app/src/main/java/code/name/monkey/retromusic/misc/CustomFragmentStatePagerAdapter.java @@ -78,8 +78,8 @@ public abstract class CustomFragmentStatePagerAdapter extends PagerAdapter { private final FragmentManager mFragmentManager; private FragmentTransaction mCurTransaction = null; - private final ArrayList mSavedState = new ArrayList(); - private final ArrayList mFragments = new ArrayList(); + private final ArrayList mSavedState = new ArrayList<>(); + private final ArrayList mFragments = new ArrayList<>(); private Fragment mCurrentPrimaryItem = null; public CustomFragmentStatePagerAdapter(FragmentManager fm) { @@ -212,8 +212,8 @@ public abstract class CustomFragmentStatePagerAdapter extends PagerAdapter { mSavedState.clear(); mFragments.clear(); if (fss != null) { - for (int i = 0; i < fss.length; i++) { - mSavedState.add((Fragment.SavedState) fss[i]); + for (Parcelable parcelable : fss) { + mSavedState.add((Fragment.SavedState) parcelable); } } Iterable keys = bundle.keySet(); diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt index bdde24be..66f35c57 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt @@ -148,7 +148,7 @@ class AlbumCoverStylePreferenceDialog : DialogFragment(), return view === instace } - override fun getPageTitle(position: Int): CharSequence? { + override fun getPageTitle(position: Int): CharSequence { return context.getString(values()[position].titleRes) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt index d53c8c1f..35345ef8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt @@ -153,7 +153,7 @@ private class NowPlayingScreenAdapter(private val context: Context) : PagerAdapt return view === instance } - override fun getPageTitle(position: Int): CharSequence? { + override fun getPageTitle(position: Int): CharSequence { return context.getString(values()[position].titleRes) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/HistoryStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/HistoryStore.java index 7a637204..36ba8629 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/HistoryStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/HistoryStore.java @@ -84,30 +84,23 @@ public class HistoryStore extends SQLiteOpenHelper { database.insert(RecentStoreColumns.NAME, null, values); // if our db is too large, delete the extra items - Cursor oldest = null; - try { - oldest = - database.query( - RecentStoreColumns.NAME, - new String[] {RecentStoreColumns.TIME_PLAYED}, - null, - null, - null, - null, - RecentStoreColumns.TIME_PLAYED + " ASC"); + try (Cursor oldest = database.query( + RecentStoreColumns.NAME, + new String[]{RecentStoreColumns.TIME_PLAYED}, + null, + null, + null, + null, + RecentStoreColumns.TIME_PLAYED + " ASC")) { if (oldest != null && oldest.getCount() > MAX_ITEMS_IN_DB) { oldest.moveToPosition(oldest.getCount() - MAX_ITEMS_IN_DB); long timeOfRecordToKeep = oldest.getLong(0); database.delete( - RecentStoreColumns.NAME, - RecentStoreColumns.TIME_PLAYED + " < ?", - new String[] {String.valueOf(timeOfRecordToKeep)}); - } - } finally { - if (oldest != null) { - oldest.close(); + RecentStoreColumns.NAME, + RecentStoreColumns.TIME_PLAYED + " < ?", + new String[]{String.valueOf(timeOfRecordToKeep)}); } } } finally { diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/SongPlayCountStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/SongPlayCountStore.java index 771f06e1..9d311296 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/SongPlayCountStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/SongPlayCountStore.java @@ -40,14 +40,11 @@ public class SongPlayCountStore extends SQLiteOpenHelper { @NonNull private static final Interpolator sInterpolator = new AccelerateInterpolator(1.5f); // how high to multiply the interpolation curve - @SuppressWarnings("FieldCanBeLocal") private static final int INTERPOLATOR_HEIGHT = 50; // how high the base value is. The ratio of the Height to Base is what really matters - @SuppressWarnings("FieldCanBeLocal") private static final int INTERPOLATOR_BASE = 25; - @SuppressWarnings("FieldCanBeLocal") private static final int ONE_WEEK_IN_MS = 1000 * 60 * 60 * 24 * 7; @NonNull @@ -257,7 +254,7 @@ public class SongPlayCountStore extends SQLiteOpenHelper { for (int i = 0; i < NUM_WEEKS - weekDiff; i++) { playCounts[i + weekDiff] = cursor.getInt(getColumnIndexForWeek(i)); } - } else if (weekDiff < 0) { + } else { // time is shifted backwards (by user) - nor typical behavior but we // will still handle it diff --git a/app/src/main/java/code/name/monkey/retromusic/repository/TopPlayedRepository.kt b/app/src/main/java/code/name/monkey/retromusic/repository/TopPlayedRepository.kt index e522a092..810c401d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/repository/TopPlayedRepository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/repository/TopPlayedRepository.kt @@ -75,7 +75,7 @@ class RealTopPlayedRepository( val notRecentlyPlayedSongs = songRepository.songs( makeNotRecentTracksCursorAndClearUpDatabase() ) - allSongs.removeAll(playedSongs) + allSongs.removeAll(playedSongs.toSet()) allSongs.addAll(notRecentlyPlayedSongs) return allSongs } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java index 949d1130..332e85e7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java @@ -245,7 +245,6 @@ public class MusicService extends MediaBrowserServiceCompat private List originalPlayingQueue = new ArrayList<>(); private List playingQueue = new ArrayList<>(); private boolean pausedByTransientLossOfFocus; - private AudioVolumeObserver audioVolumeObserver = null; private final BroadcastReceiver becomingNoisyReceiver = new BroadcastReceiver() { @@ -453,7 +452,7 @@ public class MusicService extends MediaBrowserServiceCompat .registerContentObserver( MediaStore.Audio.Playlists.INTERNAL_CONTENT_URI, true, mediaStoreObserver); - audioVolumeObserver = new AudioVolumeObserver(this); + AudioVolumeObserver audioVolumeObserver = new AudioVolumeObserver(this); audioVolumeObserver.register(AudioManager.STREAM_MUSIC, this); PreferenceUtil.INSTANCE.registerOnSharedPreferenceChangedListener(this); diff --git a/app/src/main/java/code/name/monkey/retromusic/service/ThrottledSeekHandler.kt b/app/src/main/java/code/name/monkey/retromusic/service/ThrottledSeekHandler.kt index 71f4cb46..769ddb07 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/ThrottledSeekHandler.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/ThrottledSeekHandler.kt @@ -38,6 +38,6 @@ class ThrottledSeekHandler( companion object { // milliseconds to throttle before calling run() to aggregate events - private val THROTTLE: Long = 500 + private const val THROTTLE: Long = 500 } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt index 9f640206..b095e2b8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt @@ -54,7 +54,7 @@ class PlayingNotificationImpl : PlayingNotification(), KoinComponent { stopped = false GlobalScope.launch { val song = service.currentSong - val playlist: PlaylistEntity? = MusicUtil.repository.favoritePlaylist() + val playlist: PlaylistEntity = MusicUtil.repository.favoritePlaylist() val isPlaying = service.isPlaying val isFavorite = if (playlist != null) { val songEntity = song.toSongEntity(playlist.playListId) diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt index ea7c8d9c..29ff5287 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt @@ -183,21 +183,21 @@ class PlayingNotificationOreo : PlayingNotification() { service, R.drawable.ic_close, primary - )!!, NOTIFICATION_CONTROLS_SIZE_MULTIPLIER + ), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ) val prev = createBitmap( RetroUtil.getTintedVectorDrawable( service, R.drawable.ic_skip_previous_round_white_32dp, primary - )!!, NOTIFICATION_CONTROLS_SIZE_MULTIPLIER + ), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ) val next = createBitmap( RetroUtil.getTintedVectorDrawable( service, R.drawable.ic_skip_next_round_white_32dp, primary - )!!, NOTIFICATION_CONTROLS_SIZE_MULTIPLIER + ), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ) val playPause = createBitmap( RetroUtil.getTintedVectorDrawable( @@ -206,7 +206,7 @@ class PlayingNotificationOreo : PlayingNotification() { R.drawable.ic_pause_white_48dp else R.drawable.ic_play_arrow_white_48dp, primary - )!!, NOTIFICATION_CONTROLS_SIZE_MULTIPLIER + ), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ) notificationLayout.setTextColor(R.id.title, primary) @@ -233,7 +233,7 @@ class PlayingNotificationOreo : PlayingNotification() { service, R.drawable.ic_notification, secondary - )!!, 0.6f + ), 0.6f ) ) notificationLayoutBig.setImageViewBitmap( @@ -243,7 +243,7 @@ class PlayingNotificationOreo : PlayingNotification() { service, R.drawable.ic_notification, secondary - )!!, 0.6f + ), 0.6f ) ) diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/DepthTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/DepthTransformation.kt index 97126c46..8f34507a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/DepthTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/DepthTransformation.kt @@ -16,26 +16,32 @@ package code.name.monkey.retromusic.transform import android.view.View import androidx.viewpager.widget.ViewPager +import kotlin.math.abs class DepthTransformation : ViewPager.PageTransformer { override fun transformPage(page: View, position: Float) { - if (position < -1) { // [-Infinity,-1) - // This page is way off-screen to the left. - page.alpha = 0f - } else if (position <= 0) { // [-1,0] - page.alpha = 1f - page.translationX = 0f - page.scaleX = 1f - page.scaleY = 1f - } else if (position <= 1) { // (0,1] - page.translationX = -position * page.width - page.alpha = 1 - Math.abs(position) - page.scaleX = 1 - Math.abs(position) - page.scaleY = 1 - Math.abs(position) - } else { // (1,+Infinity] - // This page is way off-screen to the right. - page.alpha = 0f + when { + position < -1 -> { // [-Infinity,-1) + // This page is way off-screen to the left. + page.alpha = 0f + } + position <= 0 -> { // [-1,0] + page.alpha = 1f + page.translationX = 0f + page.scaleX = 1f + page.scaleY = 1f + } + position <= 1 -> { // (0,1] + page.translationX = -position * page.width + page.alpha = 1 - abs(position) + page.scaleX = 1 - abs(position) + page.scaleY = 1 - abs(position) + } + else -> { // (1,+Infinity] + // This page is way off-screen to the right. + page.alpha = 0f + } } } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt index 409fb6e5..94004b6b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/HorizontalFlipTransformation.kt @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.transform import android.view.View import androidx.viewpager.widget.ViewPager +import kotlin.math.abs class HorizontalFlipTransformation : ViewPager.PageTransformer { override fun transformPage(page: View, position: Float) { @@ -36,11 +37,11 @@ class HorizontalFlipTransformation : ViewPager.PageTransformer { } else if (position <= 0) { // [-1,0] page.alpha = 1f - page.rotationX = 180 * (1 - Math.abs(position) + 1) + page.rotationX = 180 * (1 - abs(position) + 1) } else if (position <= 1) { // (0,1] page.alpha = 1f - page.rotationX = -180 * (1 - Math.abs(position) + 1) + page.rotationX = -180 * (1 - abs(position) + 1) } else { // (1,+Infinity] // This page is way off-screen to the right. diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/NormalPageTransformer.kt b/app/src/main/java/code/name/monkey/retromusic/transform/NormalPageTransformer.kt index f63e0cd7..eac68e8a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/NormalPageTransformer.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/NormalPageTransformer.kt @@ -16,6 +16,8 @@ package code.name.monkey.retromusic.transform import android.view.View import androidx.viewpager.widget.ViewPager +import kotlin.math.abs +import kotlin.math.max /** * @author Hemanth S (h4h13). @@ -33,7 +35,7 @@ class NormalPageTransformer : ViewPager.PageTransformer { view.scaleY = 0.7f } else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well - val scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)) + val scaleFactor = max(MIN_SCALE, 1 - abs(position)) val vertMargin = pageHeight * (1 - scaleFactor) / 2 val horzMargin = pageWidth * (1 - scaleFactor) / 2 if (position < 0) { @@ -57,7 +59,7 @@ class NormalPageTransformer : ViewPager.PageTransformer { } companion object { - private val MIN_SCALE = 0.85f - private val MIN_ALPHA = 0.5f + private const val MIN_SCALE = 0.85f + private const val MIN_ALPHA = 0.5f } } diff --git a/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt index 4b06bd56..25df95c8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/transform/VerticalFlipTransformation.kt @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.transform import android.view.View import androidx.viewpager.widget.ViewPager +import kotlin.math.abs class VerticalFlipTransformation : ViewPager.PageTransformer { override fun transformPage(page: View, position: Float) { @@ -36,11 +37,11 @@ class VerticalFlipTransformation : ViewPager.PageTransformer { } else if (position <= 0) { // [-1,0] page.alpha = 1f - page.rotationY = 180 * (1 - Math.abs(position) + 1) + page.rotationY = 180 * (1 - abs(position) + 1) } else if (position <= 1) { // (0,1] page.alpha = 1f - page.rotationY = -180 * (1 - Math.abs(position) + 1) + page.rotationY = -180 * (1 - abs(position) + 1) } else { // (1,+Infinity] // This page is way off-screen to the right. diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt index 67198aae..119fc81f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt @@ -348,7 +348,7 @@ object MusicUtil : KoinComponent { val repository = get() fun toggleFavorite(context: Context, song: Song) { GlobalScope.launch { - val playlist: PlaylistEntity? = repository.favoritePlaylist() + val playlist: PlaylistEntity = repository.favoritePlaylist() if (playlist != null) { val songEntity = song.toSongEntity(playlist.playListId) val isFavorite = repository.isFavoriteSong(songEntity).isNotEmpty() @@ -529,7 +529,7 @@ object MusicUtil : KoinComponent { val pendingIntent = MediaStore.createDeleteRequest(activity.contentResolver, songs.map { getSongFileUri(it.id) }) - activity.startIntentSenderForResult(pendingIntent.intentSender, 45, null, 0, 0, 0, null); + activity.startIntentSenderForResult(pendingIntent.intentSender, 45, null, 0, 0, 0, null) } fun songByGenre(genreId: Long): Song { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt index 71af0911..972664e3 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt @@ -20,12 +20,10 @@ import android.content.Intent import android.media.audiofx.AudioEffect import android.widget.Toast import androidx.core.app.ActivityCompat -import androidx.navigation.findNavController import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.* import code.name.monkey.retromusic.activities.bugreport.BugReportActivity import code.name.monkey.retromusic.helper.MusicPlayerRemote.audioSessionId -import com.google.android.material.bottomsheet.BottomSheetBehavior object NavigationUtil { fun bugReport(activity: Activity) { @@ -40,21 +38,6 @@ object NavigationUtil { ActivityCompat.startActivity(activity, Intent(activity, LicenseActivity::class.java), null) } - fun goToLyrics(activity: Activity) { - if (activity !is MainActivity) return - activity.apply { - //Hide Bottom Bar First, else Bottom Sheet doesn't collapse fully - setBottomNavVisibility(false) - if (getBottomSheetBehavior().state == BottomSheetBehavior.STATE_EXPANDED) { - collapsePanel() - } - - findNavController(R.id.fragment_container).navigate( - R.id.lyrics_fragment - ) - } - } - fun goToProVersion(context: Context) { ActivityCompat.startActivity(context, Intent(context, PurchaseActivity::class.java), null) } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt b/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt index 352fb1e4..76a56584 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PackageValidator.kt @@ -208,11 +208,11 @@ class PackageValidator( private fun getSignature(packageInfo: PackageInfo): String? { // Security best practices dictate that an app should be signed with exactly one (1) // signature. Because of this, if there are multiple signatures, reject it. - if (packageInfo.signatures == null || packageInfo.signatures.size != 1) { - return null + return if (packageInfo.signatures == null || packageInfo.signatures.size != 1) { + null } else { val certificate = packageInfo.signatures[0].toByteArray() - return getSignatureSha256(certificate) + getSignatureSha256(certificate) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java index bcdf278e..5e6872a0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java @@ -36,7 +36,6 @@ import java.util.List; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.db.PlaylistWithSongs; -import code.name.monkey.retromusic.helper.M3UConstants; import code.name.monkey.retromusic.helper.M3UWriter; import code.name.monkey.retromusic.model.Playlist; import code.name.monkey.retromusic.model.PlaylistSong; diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java index a07cc1fb..cc4aea66 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/RetroColorUtil.java @@ -188,7 +188,7 @@ public class RetroColorUtil { public static int getDominantColor(Bitmap bitmap, int defaultFooterColor) { List swatchesTemp = Palette.from(bitmap).generate().getSwatches(); - List swatches = new ArrayList(swatchesTemp); + List swatches = new ArrayList<>(swatchesTemp); Collections.sort( swatches, (swatch1, swatch2) -> swatch2.getPopulation() - swatch1.getPopulation()); return swatches.size() > 0 ? swatches.get(0).getRgb() : defaultFooterColor; diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java index 81c03ae7..8005ab2b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/RetroUtil.java @@ -40,7 +40,7 @@ import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; +import androidx.core.content.res.ResourcesCompat; import java.net.InetAddress; import java.net.NetworkInterface; @@ -127,14 +127,14 @@ public class RetroUtil { return result; } - @Nullable + @NonNull public static Drawable getTintedVectorDrawable( @NonNull Context context, @DrawableRes int id, @ColorInt int color) { return TintHelper.createTintedDrawable( getVectorDrawable(context.getResources(), id, context.getTheme()), color); } - @Nullable + @NonNull public static Drawable getTintedVectorDrawable( @NonNull Resources res, @DrawableRes int resId, @@ -146,10 +146,7 @@ public class RetroUtil { @Nullable public static Drawable getVectorDrawable( @NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme) { - if (Build.VERSION.SDK_INT >= 21) { - return res.getDrawable(resId, theme); - } - return VectorDrawableCompat.create(res, resId, theme); + return ResourcesCompat.getDrawable(res, resId, theme); } public static void hideSoftKeyboard(@Nullable Activity activity) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java index 80233a62..58a8aad1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/color/MediaNotificationProcessor.java @@ -75,11 +75,9 @@ public class MediaNotificationProcessor { */ private static final int LIGHTNESS_TEXT_DIFFERENCE_DARK = -10; - private static final String TAG = "ColorPicking"; private float[] mFilteredBackgroundHsl = null; private final Palette.Filter mBlackWhiteFilter = (rgb, hsl) -> !isWhiteOrBlack(hsl); - private boolean mIsLowPriority; private int backgroundColor; private int secondaryTextColor; private int primaryTextColor; @@ -376,10 +374,6 @@ public class MediaNotificationProcessor { return hslColor[2] >= WHITE_MIN_LIGHTNESS; } - public void setIsLowPriority(boolean isLowPriority) { - mIsLowPriority = isLowPriority; - } - private void ensureColors(int backgroundColor, int mForegroundColor) { { double backLum = NotificationColorUtil.calculateLuminance(backgroundColor); diff --git a/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java index 1b7fb758..03f8afd4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/color/NotificationColorUtil.java @@ -55,7 +55,7 @@ public class NotificationColorUtil { private final ImageUtils mImageUtils = new ImageUtils(); private final WeakHashMap> mGrayscaleBitmapCache = - new WeakHashMap>(); + new WeakHashMap<>(); private final int mGrayscaleIconMaxSize; // @dimen/notification_large_icon_width (64dp) @@ -831,11 +831,11 @@ public class NotificationColorUtil { } private static int constrain(int amount, int low, int high) { - return amount < low ? low : (amount > high ? high : amount); + return amount < low ? low : (Math.min(amount, high)); } private static float constrain(float amount, float low, float high) { - return amount < low ? low : (amount > high ? high : amount); + return amount < low ? low : (Math.min(amount, high)); } private static double pivotXyzComponent(double component) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/SeekArc.java b/app/src/main/java/code/name/monkey/retromusic/views/SeekArc.java index ccf533c4..8fb46c7d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/SeekArc.java +++ b/app/src/main/java/code/name/monkey/retromusic/views/SeekArc.java @@ -39,9 +39,7 @@ public class SeekArc extends View { private static final String TAG = SeekArc.class.getSimpleName(); private static final int INVALID_PROGRESS_VALUE = -1; - // The initial rotational offset -90 means we start at 12 o'clock - private final int mAngleOffset = -90; - private Paint mArcPaint; + private Paint mArcPaint; // Internal variables private int mArcRadius = 0; private final RectF mArcRect = new RectF(); @@ -77,8 +75,7 @@ public class SeekArc extends View { private int mThumbXPos; private int mThumbYPos; - private double mTouchAngle; - private float mTouchIgnoreRadius; + private float mTouchIgnoreRadius; /** Enable touch inside the SeekArc */ private boolean mTouchInside = true; @@ -243,8 +240,8 @@ public class SeekArc extends View { } public void setTouchInSide(boolean isEnabled) { - int thumbHalfheight = (int) mThumb.getIntrinsicHeight() / 2; - int thumbHalfWidth = (int) mThumb.getIntrinsicWidth() / 2; + int thumbHalfheight = mThumb.getIntrinsicHeight() / 2; + int thumbHalfWidth = mThumb.getIntrinsicWidth() / 2; mTouchInside = isEnabled; if (mTouchInside) { mTouchIgnoreRadius = (float) mArcRadius / 4; @@ -271,7 +268,9 @@ public class SeekArc extends View { } // Draw the arcs - final int arcStart = mStartAngle + mAngleOffset + mRotation; + // The initial rotational offset -90 means we start at 12 o'clock + int mAngleOffset = -90; + final int arcStart = mStartAngle + mAngleOffset + mRotation; final int arcSweep = mSweepAngle; canvas.drawArc(mArcRect, arcStart, arcSweep, false, mArcPaint); canvas.drawArc(mArcRect, arcStart, mProgressSweep, false, mProgressPaint); @@ -368,8 +367,8 @@ public class SeekArc extends View { mThumb = thumb; } - thumbHalfheight = (int) mThumb.getIntrinsicHeight() / 2; - thumbHalfWidth = (int) mThumb.getIntrinsicWidth() / 2; + thumbHalfheight = mThumb.getIntrinsicHeight() / 2; + thumbHalfWidth = mThumb.getIntrinsicWidth() / 2; mThumb.setBounds(-thumbHalfWidth, -thumbHalfheight, thumbHalfWidth, thumbHalfheight); mMax = a.getInteger(R.styleable.SeekArc_max, mMax); @@ -390,16 +389,16 @@ public class SeekArc extends View { a.recycle(); } - mProgress = (mProgress > mMax) ? mMax : mProgress; - mProgress = (mProgress < 0) ? 0 : mProgress; + mProgress = Math.min(mProgress, mMax); + mProgress = Math.max(mProgress, 0); - mSweepAngle = (mSweepAngle > 360) ? 360 : mSweepAngle; - mSweepAngle = (mSweepAngle < 0) ? 0 : mSweepAngle; + mSweepAngle = Math.min(mSweepAngle, 360); + mSweepAngle = Math.max(mSweepAngle, 0); mProgressSweep = (float) mProgress / mMax * mSweepAngle; mStartAngle = (mStartAngle > 360) ? 0 : mStartAngle; - mStartAngle = (mStartAngle < 0) ? 0 : mStartAngle; + mStartAngle = Math.max(mStartAngle, 0); mArcPaint = new Paint(); mArcPaint.setColor(arcColor); @@ -442,7 +441,7 @@ public class SeekArc extends View { return; } setPressed(true); - mTouchAngle = getTouchDegrees(event.getX(), event.getY()); + double mTouchAngle = getTouchDegrees(event.getX(), event.getY()); int progress = getProgressForAngle(mTouchAngle); onProgressRefresh(progress, true); } diff --git a/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsConstraintLayout.kt b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsConstraintLayout.kt index 101624be..4d2cb556 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsConstraintLayout.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/insets/InsetsConstraintLayout.kt @@ -2,14 +2,9 @@ package code.name.monkey.retromusic.views.insets import android.content.Context import android.util.AttributeSet -import android.view.WindowInsets import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.view.WindowInsetsCompat import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding -import code.name.monkey.retromusic.extensions.recordInitialPaddingForView -import code.name.monkey.retromusic.extensions.requestApplyInsetsWhenAttached import code.name.monkey.retromusic.util.RetroUtil -import com.afollestad.materialdialogs.utils.MDUtil.updatePadding class InsetsConstraintLayout @JvmOverloads constructor( context: Context, diff --git a/app/src/main/res/layout/fragment_artist_details.xml b/app/src/main/res/layout/fragment_artist_details.xml index a50a39bb..b7380f0c 100644 --- a/app/src/main/res/layout/fragment_artist_details.xml +++ b/app/src/main/res/layout/fragment_artist_details.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:fitsSystemWindows="true" + android:transitionGroup="true"> + android:layout_height="wrap_content"> - diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt index 27a72c3b..725782ca 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt @@ -74,7 +74,7 @@ object ATH { setActivityToolbarColor(activity, toolbar, ThemeStore.primaryColor(activity)) } - fun setActivityToolbarColor( + private fun setActivityToolbarColor( activity: Activity, toolbar: Toolbar?, color: Int ) { diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATHActivity.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATHActivity.kt index 50a937a3..be2a6556 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATHActivity.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATHActivity.kt @@ -23,7 +23,7 @@ open class ATHActivity : AppCompatActivity() { } } - fun onThemeChanged() { + private fun onThemeChanged() { postRecreate() } diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java index 2fb36a80..ab82a32a 100644 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java @@ -56,7 +56,7 @@ public class ATEPreferenceDialogFragment extends DialogFragment implements Dialo } else { DialogPreference.TargetFragment fragment = (DialogPreference.TargetFragment) rawFragment; String key = this.getArguments().getString(ARG_KEY); - this.mPreference = (DialogPreference) fragment.findPreference(key); + this.mPreference = fragment.findPreference(key); } } @@ -96,7 +96,7 @@ public class ATEPreferenceDialogFragment extends DialogFragment implements Dialo } @Override - public void onDismiss(DialogInterface dialog) { + public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); Log.i(TAG, "onDismiss: " + mWhichButtonClicked); onDialogClosed(mWhichButtonClicked == DialogInterface.BUTTON_POSITIVE); diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt index 59b09c2e..fe36eae7 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt @@ -3,6 +3,7 @@ package code.name.monkey.appthemehelper.util import android.graphics.Color import androidx.annotation.ColorInt import androidx.annotation.FloatRange +import kotlin.math.* object ColorUtil { fun desaturateColor(color: Int, ratio: Float): Int { @@ -59,7 +60,7 @@ object ColorUtil { @ColorInt fun adjustAlpha(@ColorInt color: Int, @FloatRange(from = 0.0, to = 1.0) factor: Float): Int { - val alpha = Math.round(Color.alpha(color) * factor) + val alpha = (Color.alpha(color) * factor).roundToInt() val red = Color.red(color) val green = Color.green(color) val blue = Color.blue(color) @@ -68,7 +69,7 @@ object ColorUtil { @ColorInt fun withAlpha(@ColorInt baseColor: Int, @FloatRange(from = 0.0, to = 1.0) alpha: Float): Int { - val a = Math.min(255, Math.max(0, (alpha * 255).toInt())) shl 24 + val a = min(255, max(0, (alpha * 255).toInt())) shl 24 val rgb = 0x00ffffff and baseColor return a + rgb } @@ -100,15 +101,15 @@ object ColorUtil { } fun isColorSaturated(@ColorInt color: Int): Boolean { - val max = Math.max( + val max = max( 0.299 * Color.red(color), - Math.max(0.587 * Color.green(color), 0.114 * Color.blue(color)) + max(0.587 * Color.green(color), 0.114 * Color.blue(color)) ) - val min = Math.min( + val min = min( 0.299 * Color.red(color), - Math.min(0.587 * Color.green(color), 0.114 * Color.blue(color)) + min(0.587 * Color.green(color), 0.114 * Color.blue(color)) ) - val diff = Math.abs(max - min) + val diff = abs(max - min) return diff > 20 } @@ -121,10 +122,10 @@ object ColorUtil { ) } - fun getDifference(@ColorInt color1: Int, @ColorInt color2: Int): Double { - var diff = Math.abs(0.299 * (Color.red(color1) - Color.red(color2))) - diff += Math.abs(0.587 * (Color.green(color1) - Color.green(color2))) - diff += Math.abs(0.114 * (Color.blue(color1) - Color.blue(color2))) + private fun getDifference(@ColorInt color1: Int, @ColorInt color2: Int): Double { + var diff = abs(0.299 * (Color.red(color1) - Color.red(color2))) + diff += abs(0.587 * (Color.green(color1) - Color.green(color2))) + diff += abs(0.114 * (Color.blue(color1) - Color.blue(color2))) return diff } diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java index 9e67a12c..54f0cd76 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/TintHelper.java @@ -6,7 +6,6 @@ import android.content.res.ColorStateList; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; -import android.os.Build; import android.view.View; import android.widget.Button; import android.widget.CheckBox; @@ -149,40 +148,14 @@ public final class TintHelper { useDarker ? R.color.ate_control_normal_dark : R.color.ate_control_normal_light), color }); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - radioButton.setButtonTintList(sl); - } else { - Drawable d = createTintedDrawable( - ContextCompat.getDrawable(radioButton.getContext(), R.drawable.abc_btn_radio_material), sl); - radioButton.setButtonDrawable(d); - } + radioButton.setButtonTintList(sl); } public static void setTint(@NonNull SeekBar seekBar, @ColorInt int color, boolean useDarker) { final ColorStateList s1 = getDisabledColorStateList(color, ContextCompat.getColor(seekBar.getContext(), useDarker ? R.color.ate_control_disabled_dark : R.color.ate_control_disabled_light)); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - seekBar.setThumbTintList(s1); - seekBar.setProgressTintList(s1); - } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD_MR1) { - Drawable progressDrawable = createTintedDrawable(seekBar.getProgressDrawable(), s1); - seekBar.setProgressDrawable(progressDrawable); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - Drawable thumbDrawable = createTintedDrawable(seekBar.getThumb(), s1); - seekBar.setThumb(thumbDrawable); - } - } else { - PorterDuff.Mode mode = PorterDuff.Mode.SRC_IN; - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) { - mode = PorterDuff.Mode.MULTIPLY; - } - if (seekBar.getIndeterminateDrawable() != null) { - seekBar.getIndeterminateDrawable().setColorFilter(color, mode); - } - if (seekBar.getProgressDrawable() != null) { - seekBar.getProgressDrawable().setColorFilter(color, mode); - } - } + seekBar.setThumbTintList(s1); + seekBar.setProgressTintList(s1); } public static void setTint(@NonNull ProgressBar progressBar, @ColorInt int color) { @@ -191,23 +164,10 @@ public final class TintHelper { public static void setTint(@NonNull ProgressBar progressBar, @ColorInt int color, boolean skipIndeterminate) { ColorStateList sl = ColorStateList.valueOf(color); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - progressBar.setProgressTintList(sl); - progressBar.setSecondaryProgressTintList(sl); - if (!skipIndeterminate) { - progressBar.setIndeterminateTintList(sl); - } - } else { - PorterDuff.Mode mode = PorterDuff.Mode.SRC_IN; - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) { - mode = PorterDuff.Mode.MULTIPLY; - } - if (!skipIndeterminate && progressBar.getIndeterminateDrawable() != null) { - progressBar.getIndeterminateDrawable().setColorFilter(color, mode); - } - if (progressBar.getProgressDrawable() != null) { - progressBar.getProgressDrawable().setColorFilter(color, mode); - } + progressBar.setProgressTintList(sl); + progressBar.setSecondaryProgressTintList(sl); + if (!skipIndeterminate) { + progressBar.setIndeterminateTintList(sl); } } @@ -225,7 +185,7 @@ public final class TintHelper { }); if (editText instanceof AppCompatEditText) { ((AppCompatEditText) editText).setSupportBackgroundTintList(editTextColorStateList); - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + } else { editText.setBackgroundTintList(editTextColorStateList); } setCursorTint(editText, color); @@ -243,13 +203,7 @@ public final class TintHelper { useDarker ? R.color.ate_control_normal_dark : R.color.ate_control_normal_light), color }); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - box.setButtonTintList(sl); - } else { - Drawable drawable = createTintedDrawable( - ContextCompat.getDrawable(box.getContext(), R.drawable.abc_btn_check_material), sl); - box.setButtonDrawable(drawable); - } + box.setButtonTintList(sl); } public static void setTint(@NonNull ImageView image, @ColorInt int color) { @@ -257,9 +211,6 @@ public final class TintHelper { } public static void setTint(@NonNull Switch switchView, @ColorInt int color, boolean useDarker) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { - return; - } if (switchView.getTrackDrawable() != null) { switchView.setTrackDrawable(modifySwitchDrawable(switchView.getContext(), switchView.getTrackDrawable(), color, false, false, useDarker)); @@ -286,7 +237,6 @@ public final class TintHelper { setTintAuto(view, color, background, ATHUtil.INSTANCE.isWindowBackgroundDark(view.getContext())); } - @SuppressWarnings("deprecation") public static void setTintAuto(final @NonNull View view, final @ColorInt int color, boolean background, final boolean isDark) { if (!background) { @@ -312,8 +262,7 @@ public final class TintHelper { background = true; } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && - !background && view.getBackground() instanceof RippleDrawable) { + if (!background && view.getBackground() instanceof RippleDrawable) { // Ripples for the above views (e.g. when you tap and hold a switch or checkbox) RippleDrawable rd = (RippleDrawable) view.getBackground(); @SuppressLint("PrivateResource") final int unchecked = ContextCompat.getColor(view.getContext(), @@ -348,7 +297,6 @@ public final class TintHelper { } } - @SuppressWarnings("deprecation") public static void setTintSelector(@NonNull View view, @ColorInt final int color, final boolean darker, final boolean useDarkTheme) { final boolean isColorLight = ColorUtil.INSTANCE.isColorLight(color); @@ -363,8 +311,7 @@ public final class TintHelper { final ColorStateList sl; if (view instanceof Button) { sl = getDisabledColorStateList(color, disabled); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && - view.getBackground() instanceof RippleDrawable) { + if (view.getBackground() instanceof RippleDrawable) { RippleDrawable rd = (RippleDrawable) view.getBackground(); rd.setColor(ColorStateList.valueOf(rippleColor)); } diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java index 07e3fd4c..fc5bc6e3 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java @@ -5,7 +5,6 @@ import android.content.Context; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; -import android.os.Build; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -17,6 +16,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.RadioButton; + import androidx.annotation.CheckResult; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; @@ -35,11 +35,13 @@ import androidx.appcompat.widget.AppCompatImageView; import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.ToolbarWidgetWrapper; import androidx.core.graphics.drawable.DrawableCompat; -import code.name.monkey.appthemehelper.R; -import code.name.monkey.appthemehelper.ThemeStore; + import java.lang.reflect.Field; import java.util.ArrayList; +import code.name.monkey.appthemehelper.R; +import code.name.monkey.appthemehelper.ThemeStore; + public final class ToolbarContentTintHelper { public static class InternalToolbarContentTintUtil { @@ -92,30 +94,27 @@ public final class ToolbarContentTintHelper { if (toolbar == null) { return; } - toolbar.post(new Runnable() { - @Override - public void run() { - try { - Field f1 = Toolbar.class.getDeclaredField("mMenuView"); - f1.setAccessible(true); - ActionMenuView actionMenuView = (ActionMenuView) f1.get(toolbar); - Field f2 = ActionMenuView.class.getDeclaredField("mPresenter"); - f2.setAccessible(true); + toolbar.post(() -> { + try { + Field f1 = Toolbar.class.getDeclaredField("mMenuView"); + f1.setAccessible(true); + ActionMenuView actionMenuView = (ActionMenuView) f1.get(toolbar); + Field f2 = ActionMenuView.class.getDeclaredField("mPresenter"); + f2.setAccessible(true); - // Actually ActionMenuPresenter - BaseMenuPresenter presenter = (BaseMenuPresenter) f2.get(actionMenuView); - Field f3 = presenter.getClass().getDeclaredField("mOverflowPopup"); - f3.setAccessible(true); - MenuPopupHelper overflowMenuPopupHelper = (MenuPopupHelper) f3.get(presenter); - setTintForMenuPopupHelper(context, overflowMenuPopupHelper, color); + // Actually ActionMenuPresenter + BaseMenuPresenter presenter = (BaseMenuPresenter) f2.get(actionMenuView); + Field f3 = presenter.getClass().getDeclaredField("mOverflowPopup"); + f3.setAccessible(true); + MenuPopupHelper overflowMenuPopupHelper = (MenuPopupHelper) f3.get(presenter); + setTintForMenuPopupHelper(context, overflowMenuPopupHelper, color); - Field f4 = presenter.getClass().getDeclaredField("mActionButtonPopup"); - f4.setAccessible(true); - MenuPopupHelper subMenuPopupHelper = (MenuPopupHelper) f4.get(presenter); - setTintForMenuPopupHelper(context, subMenuPopupHelper, color); - } catch (Exception e) { - e.printStackTrace(); - } + Field f4 = presenter.getClass().getDeclaredField("mActionButtonPopup"); + f4.setAccessible(true); + MenuPopupHelper subMenuPopupHelper = (MenuPopupHelper) f4.get(presenter); + setTintForMenuPopupHelper(context, subMenuPopupHelper, color); + } catch (Exception e) { + e.printStackTrace(); } }); } @@ -172,28 +171,19 @@ public final class ToolbarContentTintHelper { CheckBox check = (CheckBox) checkboxField.get(iv); if (check != null) { TintHelper.setTint(check, color, isDark); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - check.setBackground(null); - } + check.setBackground(null); } RadioButton radioButton = (RadioButton) radioButtonField.get(iv); if (radioButton != null) { TintHelper.setTint(radioButton, color, isDark); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - radioButton.setBackground(null); - } + radioButton.setBackground(null); } } } catch (Exception e) { e.printStackTrace(); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - listView.getViewTreeObserver().removeOnGlobalLayoutListener(this); - } else { - //noinspection deprecation - listView.getViewTreeObserver().removeGlobalOnLayoutListener(this); - } + listView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); } @@ -202,7 +192,6 @@ public final class ToolbarContentTintHelper { } } - @SuppressWarnings("unchecked") public static void tintMenu(@NonNull Toolbar toolbar, @Nullable Menu menu, final @ColorInt int color) { try { @@ -338,13 +327,8 @@ public final class ToolbarContentTintHelper { //Important to set the color filter in seperate thread, by adding it to the message queue //Won't work otherwise. - innerView.post(new Runnable() { - @Override - public void run() { - ((ActionMenuItemView) innerView).getCompoundDrawables()[finalK] - .setColorFilter(colorFilter); - } - }); + innerView.post(() -> ((ActionMenuItemView) innerView).getCompoundDrawables()[finalK] + .setColorFilter(colorFilter)); } } } @@ -363,7 +347,7 @@ public final class ToolbarContentTintHelper { @Nullable public static Toolbar getSupportActionBarView(@Nullable ActionBar ab) { - if (ab == null || !(ab instanceof WindowDecorActionBar)) { + if (!(ab instanceof WindowDecorActionBar)) { return null; } try { @@ -411,7 +395,6 @@ public final class ToolbarContentTintHelper { secondaryTextColor, menuWidgetColor); } - @SuppressWarnings("unchecked") public static void setToolbarContentColor(@NonNull Context context, Toolbar toolbar, @Nullable Menu menu, @@ -577,7 +560,7 @@ public final class ToolbarContentTintHelper { viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - final ArrayList outViews = new ArrayList(); + final ArrayList outViews = new ArrayList<>(); decorView.findViewsWithText(outViews, overflowDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); if (outViews.isEmpty()) { @@ -605,7 +588,7 @@ public final class ToolbarContentTintHelper { final View actionView = item.getActionView(); final View expandActivitiesButton = actionView.findViewById(R.id.expand_activities_button); if (expandActivitiesButton != null) { - final ImageView image = (ImageView) expandActivitiesButton.findViewById(R.id.image); + final ImageView image = expandActivitiesButton.findViewById(R.id.image); if (image != null) { final Drawable drawable = image.getDrawable(); final Drawable wrapped = DrawableCompat.wrap(drawable); diff --git a/appthemehelper/src/main/res/layout/ate_preference_switch_support.xml b/appthemehelper/src/main/res/layout/ate_preference_switch_support.xml index 2f6f3889..50d68fce 100755 --- a/appthemehelper/src/main/res/layout/ate_preference_switch_support.xml +++ b/appthemehelper/src/main/res/layout/ate_preference_switch_support.xml @@ -1,5 +1,5 @@ - @android:color/system_accent1_200 - @android:color/system_accent1_800 + @android:color/system_accent1_500 \ No newline at end of file diff --git a/appthemehelper/src/main/res/values/ids.xml b/appthemehelper/src/main/res/values/ids.xml deleted file mode 100644 index a6b3daec..00000000 --- a/appthemehelper/src/main/res/values/ids.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file