diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt index 39c46e712..81f880ace 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -22,11 +22,11 @@ import android.os.Bundle import android.view.animation.LinearInterpolator import android.widget.SeekBar import androidx.lifecycle.lifecycleScope -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding import code.name.monkey.retromusic.db.toSongEntity +import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.drawAboveSystemBars import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.glide.BlurTransformation @@ -66,7 +66,7 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { setUpMusicControllers() progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) - lastPlaybackControlsColor = ThemeStore.accentColor(this) + lastPlaybackControlsColor = accentColor() binding.close.setOnClickListener { onBackPressed() } @@ -91,14 +91,12 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { private fun toggleFavorite(song: Song) { lifecycleScope.launch(Dispatchers.IO) { val playlist = repository.favoritePlaylist() - if (playlist != null) { - val songEntity = song.toSongEntity(playlist.playListId) - val isFavorite = repository.isSongFavorite(song.id) - if (isFavorite) { - repository.removeSongFromPlaylist(songEntity) - } else { - repository.insertSongs(listOf(song.toSongEntity(playlist.playListId))) - } + val songEntity = song.toSongEntity(playlist.playListId) + val isFavorite = repository.isSongFavorite(song.id) + if (isFavorite) { + repository.removeSongFromPlaylist(songEntity) + } else { + repository.insertSongs(listOf(song.toSongEntity(playlist.playListId))) } sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) } @@ -139,7 +137,6 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { } private fun setUpPrevNext() { - binding.nextButton.setOnClickListener { MusicPlayerRemote.playNextSong() } binding.previousButton.setOnClickListener { MusicPlayerRemote.back() } } @@ -246,7 +243,8 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { GlideApp.with(this) .load(RetroGlideExtension.getSongModel(song)) - .songCoverOptions(song).transform(BlurTransformation.Builder(this).build()) + .songCoverOptions(song) + .transform(BlurTransformation.Builder(this).build()) .into(binding.image) } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.kt index e4d6a8f40..755793938 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/LicenseActivity.kt @@ -16,12 +16,12 @@ package code.name.monkey.retromusic.activities import android.graphics.Color import android.os.Bundle import android.view.MenuItem -import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.activities.base.AbsThemeActivity import code.name.monkey.retromusic.databinding.ActivityLicenseBinding +import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.drawAboveSystemBars import code.name.monkey.retromusic.extensions.surfaceColor import java.io.BufferedReader @@ -59,11 +59,11 @@ class LicenseActivity : AbsThemeActivity() { "body { background-color: %s; color: %s; }", backgroundColor, contentColor ) ) - .replace("{link-color}", colorToCSS(accentColor(this))) + .replace("{link-color}", colorToCSS(accentColor())) .replace( "{link-color-active}", colorToCSS( - lightenColor(accentColor(this)) + lightenColor(accentColor()) ) ) binding.license.loadData(changeLog, "text/html", "UTF-8") diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt index 57a0d2657..248dd567b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PermissionActivity.kt @@ -25,14 +25,10 @@ import androidx.annotation.RequiresApi import androidx.core.net.toUri import androidx.core.text.parseAsHtml import androidx.core.view.isVisible -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.databinding.ActivityPermissionBinding -import code.name.monkey.retromusic.extensions.accentBackgroundColor -import code.name.monkey.retromusic.extensions.setStatusBarColorAuto -import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto -import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.util.RingtoneManager class PermissionActivity : AbsMusicServiceActivity() { @@ -75,10 +71,11 @@ class PermissionActivity : AbsMusicServiceActivity() { } private fun setupTitle() { - val color = ThemeStore.accentColor(this) + val color = accentColor() val hexColor = String.format("#%06X", 0xFFFFFF and color) - val appName = "Hello there!
Welcome to Retro Music" - .parseAsHtml() + val appName = + "Hello there!
Welcome to Retro Music" + .parseAsHtml() binding.appNameText.text = appName } @@ -87,14 +84,13 @@ class PermissionActivity : AbsMusicServiceActivity() { if (hasStoragePermission()) { binding.storagePermission.checkImage.isVisible = true binding.storagePermission.checkImage.imageTintList = - ColorStateList.valueOf(ThemeStore.accentColor(this)) + ColorStateList.valueOf(accentColor()) } if (hasAudioPermission()) { binding.audioPermission.checkImage.isVisible = true binding.audioPermission.checkImage.imageTintList = - ColorStateList.valueOf(ThemeStore.accentColor(this)) + ColorStateList.valueOf(accentColor()) } - super.onResume() } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt index 656423df5..e4da0f4fb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt @@ -28,6 +28,7 @@ import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsBaseActivity import code.name.monkey.retromusic.databinding.ActivityProVersionBinding +import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.setLightStatusBar import code.name.monkey.retromusic.extensions.setStatusBarColor import com.anjlab.android.iab.v3.BillingProcessor @@ -61,7 +62,7 @@ class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler { billingProcessor.purchase(this@PurchaseActivity, PRO_VERSION_PRODUCT_ID) } binding.bannerContainer.backgroundTintList = - ColorStateList.valueOf(ThemeStore.accentColor(this)) + ColorStateList.valueOf(accentColor()) } private fun restorePurchase() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt index 23b9bfb77..03d0ec405 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/ShareInstagramStory.kt @@ -28,6 +28,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.activities.base.AbsBaseActivity import code.name.monkey.retromusic.databinding.ActivityShareInstagramBinding +import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.setLightStatusBar import code.name.monkey.retromusic.extensions.setStatusBarColor import code.name.monkey.retromusic.glide.GlideApp @@ -96,11 +97,11 @@ class ShareInstagramStory : AbsBaseActivity() { binding.shareButton.setTextColor( MaterialValueHelper.getPrimaryTextColor( this, - ColorUtil.isColorLight(ThemeStore.accentColor(this)) + ColorUtil.isColorLight(accentColor()) ) ) binding.shareButton.backgroundTintList = - ColorStateList.valueOf(ThemeStore.accentColor(this)) + ColorStateList.valueOf(accentColor()) } private fun setColors(colorLight: Boolean, color: Int) { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt index fda12d6bf..c014c1381 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt @@ -75,8 +75,8 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH setupToolbar() billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY, this) - TintHelper.setTint(binding.progress, ThemeStore.accentColor(this)) - binding.donation.setTextColor(ThemeStore.accentColor(this)) + TintHelper.setTint(binding.progress, accentColor()) + binding.donation.setTextColor(accentColor()) } private fun setupToolbar() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt index e3d6644f1..9ae3c043f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt @@ -5,7 +5,6 @@ import android.content.pm.PackageManager import android.graphics.Color import android.os.Bundle import androidx.core.widget.NestedScrollView -import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark import code.name.monkey.appthemehelper.util.ColorUtil.isColorLight import code.name.monkey.appthemehelper.util.ColorUtil.lightenColor @@ -14,12 +13,8 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.Constants import code.name.monkey.retromusic.activities.base.AbsThemeActivity import code.name.monkey.retromusic.databinding.ActivityWhatsNewBinding -import code.name.monkey.retromusic.extensions.accentColor -import code.name.monkey.retromusic.extensions.drawAboveSystemBars -import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto -import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.util.PreferenceUtil.lastVersion -import code.name.monkey.retromusic.util.RetroUtil import java.io.BufferedReader import java.io.InputStreamReader import java.nio.charset.StandardCharsets @@ -45,13 +40,13 @@ class WhatsNewActivity : AbsThemeActivity() { // Inject color values for WebView body background and links val isDark = isWindowBackgroundDark(this) - val accentColor = accentColor(this) + val accentColor = accentColor() val backgroundColor = colorToCSS( surfaceColor(Color.parseColor(if (isDark) "#424242" else "#ffffff")) ) val contentColor = colorToCSS(Color.parseColor(if (isDark) "#ffffff" else "#000000")) val textColor = colorToCSS(Color.parseColor(if (isDark) "#60FFFFFF" else "#80000000")) - val accentColorString = colorToCSS(accentColor(this)) + val accentColorString = colorToCSS(accentColor()) val cardBackgroundColor = colorToCSS(Color.parseColor(if (isDark) "#353535" else "#ffffff")) val accentTextColor = colorToCSS( @@ -64,11 +59,11 @@ class WhatsNewActivity : AbsThemeActivity() { "{style-placeholder}", "body { background-color: $backgroundColor; color: $contentColor; } li {color: $textColor;} h3 {color: $accentColorString;} .tag {background-color: $accentColorString; color: $accentTextColor; } div{background-color: $cardBackgroundColor;}" ) - .replace("{link-color}", colorToCSS(accentColor(this))) + .replace("{link-color}", colorToCSS(accentColor())) .replace( "{link-color-active}", colorToCSS( - lightenColor(accentColor(this)) + lightenColor(accentColor()) ) ) binding.webView.loadData(changeLog, "text/html", "UTF-8") @@ -79,10 +74,7 @@ class WhatsNewActivity : AbsThemeActivity() { } setChangelogRead(this) binding.tgFab.setOnClickListener { - RetroUtil.openUrl( - this, - Constants.TELEGRAM_CHANGE_LOG - ) + openUrl(Constants.TELEGRAM_CHANGE_LOG) } binding.tgFab.accentColor() binding.tgFab.shrink() 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 fa29c98fb..30f8cb241 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 @@ -29,9 +29,9 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import androidx.core.app.ActivityCompat import androidx.core.content.getSystemService -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.accentColor import com.google.android.material.snackbar.Snackbar abstract class AbsBaseActivity : AbsThemeActivity() { @@ -126,24 +126,25 @@ abstract class AbsBaseActivity : AbsThemeActivity() { Snackbar.LENGTH_INDEFINITE ) .setAction(R.string.action_grant) { requestPermissions() } - .setActionTextColor(ThemeStore.accentColor(this)).show() + .setActionTextColor(accentColor()).show() } else { // User has deny permission and checked never show permission dialog so you can redirect to Application settings page Snackbar.make( snackBarContainer, permissionDeniedMessage!!, Snackbar.LENGTH_INDEFINITE - ).setAction(R.string.action_settings) { - val intent = Intent() - intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS - val uri = Uri.fromParts( - "package", - this@AbsBaseActivity.packageName, - null - ) - intent.data = uri - startActivity(intent) - }.setActionTextColor(ThemeStore.accentColor(this)).show() + ) + .setAction(R.string.action_settings) { + val intent = Intent() + intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS + val uri = Uri.fromParts( + "package", + this@AbsBaseActivity.packageName, + null + ) + intent.data = uri + startActivity(intent) + }.setActionTextColor(accentColor()).show() } return } @@ -156,6 +157,7 @@ abstract class AbsBaseActivity : AbsThemeActivity() { companion object { const val PERMISSION_REQUEST = 100 } + // this lets keyboard close when clicked in backgroud override fun dispatchTouchEvent(event: MotionEvent): Boolean { if (event.action == MotionEvent.ACTION_DOWN) { @@ -165,7 +167,10 @@ abstract class AbsBaseActivity : AbsThemeActivity() { v.getGlobalVisibleRect(outRect) if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) { v.clearFocus() - getSystemService()?.hideSoftInputFromWindow(v.windowToken, 0) + getSystemService()?.hideSoftInputFromWindow( + v.windowToken, + 0 + ) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt index d5157bc2b..360bb3853 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsCastActivity.kt @@ -4,7 +4,7 @@ import android.os.Bundle import android.view.ViewStub import code.name.monkey.retromusic.R import code.name.monkey.retromusic.cast.CastHelper -import code.name.monkey.retromusic.cast.RetroSessionManager +import code.name.monkey.retromusic.cast.RetroSessionManagerListener import code.name.monkey.retromusic.cast.RetroWebServer import code.name.monkey.retromusic.helper.MusicPlayerRemote import com.google.android.gms.cast.framework.CastContext @@ -22,7 +22,7 @@ abstract class AbsCastActivity : AbsSlidingMusicPanelActivity() { private var playServicesAvailable: Boolean = false private val sessionManagerListener by lazy { - object : RetroSessionManager { + object : RetroSessionManagerListener { override fun onSessionStarting(castSession: CastSession) { invalidateOptionsMenu() webServer = RetroWebServer.getInstance(this@AbsCastActivity) @@ -88,7 +88,7 @@ abstract class AbsCastActivity : AbsSlidingMusicPanelActivity() { } private fun setupCast() { - sessionManager = CastContext.getSharedInstance(applicationContext).sessionManager + sessionManager = CastContext.getSharedInstance(this).sessionManager } override fun onResume() { @@ -104,9 +104,15 @@ abstract class AbsCastActivity : AbsSlidingMusicPanelActivity() { super.onResume() } - override fun onStop() { - super.onStop() - mCastSession = null + override fun onPause() { + super.onPause() + if (playServicesAvailable) { + sessionManager.removeSessionManagerListener( + sessionManagerListener, + CastSession::class.java + ) + mCastSession = null + } } private fun songChanged(position: Int) { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt index 4bf23f402..98ccc4356 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt @@ -26,7 +26,6 @@ import androidx.annotation.StringRes import androidx.core.content.getSystemService import androidx.core.net.toUri import androidx.lifecycle.lifecycleScope -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -38,6 +37,7 @@ import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo import code.name.monkey.retromusic.activities.bugreport.model.github.GithubLogin import code.name.monkey.retromusic.activities.bugreport.model.github.GithubTarget import code.name.monkey.retromusic.databinding.ActivityBugReportBinding +import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.FloatingActionButton @@ -87,7 +87,7 @@ open class BugReportActivity : AbsThemeActivity() { } private fun initViews() { - val accentColor = ThemeStore.accentColor(this) + val accentColor = accentColor() setSupportActionBar(binding.toolbar) ToolbarContentTintHelper.colorBackButton(binding.toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) @@ -314,6 +314,7 @@ open class BugReportActivity : AbsThemeActivity() { private const val STATUS_BAD_CREDENTIALS = 401 private const val STATUS_ISSUES_NOT_ENABLED = 410 - private const val ISSUE_TRACKER_LINK = "https://github.com/RetroMusicPlayer/RetroMusicPlayer" + private const val ISSUE_TRACKER_LINK = + "https://github.com/RetroMusicPlayer/RetroMusicPlayer" } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt index 8cf8cbd40..6588e80bc 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt @@ -41,6 +41,7 @@ import code.name.monkey.retromusic.R.drawable import code.name.monkey.retromusic.activities.base.AbsBaseActivity import code.name.monkey.retromusic.activities.saf.SAFGuideActivity import code.name.monkey.retromusic.extensions.accentColor +import code.name.monkey.retromusic.extensions.hideSoftKeyboard import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto import code.name.monkey.retromusic.model.ArtworkInfo import code.name.monkey.retromusic.model.AudioTagInfo @@ -346,7 +347,7 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() { fieldKeyValueMap: Map, artworkInfo: ArtworkInfo? ) { - RetroUtil.hideSoftKeyboard(this) + hideSoftKeyboard() hideFab() println(fieldKeyValueMap) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/ContributorAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/ContributorAdapter.kt index 28719c962..de7226b5c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/ContributorAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/ContributorAdapter.kt @@ -14,15 +14,14 @@ */ package code.name.monkey.retromusic.adapter -import android.app.Activity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.openUrl import code.name.monkey.retromusic.model.Contributor -import code.name.monkey.retromusic.util.RetroUtil.openUrl import code.name.monkey.retromusic.views.RetroShapeableImageView import com.bumptech.glide.Glide @@ -65,7 +64,7 @@ class ContributorAdapter( val contributor = contributors[position] holder.bindData(contributor) holder.itemView.setOnClickListener { - openUrl(it?.context as Activity, contributors[position].link) + it?.context?.openUrl(contributors[position].link) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt index ade999edc..edba4cb32 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt @@ -91,9 +91,9 @@ open class AlbumAdapter( // Check if imageContainer exists so we can have a smooth transition without // CardView clipping, if it doesn't exist in current layout set transition name to image instead. if (holder.imageContainer != null) { - holder.imageContainer!!.setTransitionName(album.id.toString()) + holder.imageContainer?.transitionName = album.id.toString() } else { - holder.image!!.setTransitionName(album.id.toString()) + holder.image?.transitionName = album.id.toString() } loadAlbumCover(album, holder) } 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 a568ad12d..7d0f1bd4d 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 @@ -85,7 +85,6 @@ class AlbumCoverPagerAdapter( class AlbumCoverFragment : Fragment() { - private lateinit var albumCover: ImageView private var isColorReady: Boolean = false private lateinit var color: MediaNotificationProcessor private lateinit var song: Song @@ -106,8 +105,6 @@ class AlbumCoverPagerAdapter( savedInstanceState: Bundle? ): View? { val view = inflater.inflate(getLayoutWithPlayerTheme(), container, false) - view.setTransitionName("lyrics") - albumCover = view.findViewById(R.id.player_image) view.setOnClickListener { if (mainActivity.getBottomSheetBehavior().state == STATE_EXPANDED) { showLyricsDialog() @@ -158,7 +155,7 @@ class AlbumCoverPagerAdapter( override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - loadAlbumCover() + loadAlbumCover(albumCover = view.findViewById(R.id.player_image)) } override fun onDestroyView() { @@ -166,7 +163,7 @@ class AlbumCoverPagerAdapter( colorReceiver = null } - private fun loadAlbumCover() { + private fun loadAlbumCover(albumCover: ImageView) { GlideApp.with(this).asBitmapPalette().songCoverOptions(song) //.checkIgnoreMediaStore() .load(RetroGlideExtension.getSongModel(song)) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt index d896b1c73..6cb68af92 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt @@ -92,9 +92,9 @@ class ArtistAdapter( val transitionName = if (albumArtistsOnly) artist.name else artist.id.toString() if (holder.imageContainer != null) { - holder.imageContainer!!.setTransitionName(transitionName) + holder.imageContainer?.transitionName = transitionName } else { - holder.image!!.setTransitionName(transitionName) + holder.image?.transitionName = transitionName } loadArtistImage(artist, holder) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt index d039691ee..89122d125 100755 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt @@ -163,7 +163,7 @@ class PlaylistAdapter( if (isInQuickSelectMode) { toggleChecked(layoutPosition) } else { - itemView.setTransitionName("playlist") + itemView.transitionName = "playlist" listener.onPlaylistClick(dataSet[layoutPosition], itemView) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt b/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt index cf365c84a..7bbc955be 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.kt @@ -1,3 +1,5 @@ +@file:Suppress("unused") + package code.name.monkey.retromusic.cast import android.content.Context diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManager.kt b/app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManagerListener.kt similarity index 85% rename from app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManager.kt rename to app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManagerListener.kt index 69bc45348..32817ab40 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManager.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/RetroSessionManagerListener.kt @@ -3,7 +3,7 @@ package code.name.monkey.retromusic.cast import com.google.android.gms.cast.framework.CastSession import com.google.android.gms.cast.framework.SessionManagerListener -interface RetroSessionManager : SessionManagerListener { +interface RetroSessionManagerListener : SessionManagerListener { override fun onSessionResuming(p0: CastSession, p1: String) { } 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 faee38b2e..d6a938009 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 @@ -26,15 +26,9 @@ class RetroWebServer(val context: Context) : NanoHTTPD(SERVER_PORT) { } } - override fun serve( - uri: String?, - method: Method?, - headers: MutableMap?, - parms: MutableMap?, - files: MutableMap? - ): Response { - if (uri?.contains(PART_COVER_ART) == true) { - val albumId = parms?.get(PARAM_ID) ?: return errorResponse() + override fun serve(session: IHTTPSession?): Response { + if (session?.uri?.contains(PART_COVER_ART) == true) { + val albumId = session.parameters?.get(PARAM_ID)?.get(0) ?: return errorResponse() val albumArtUri = MusicUtil.getMediaStoreAlbumCoverUri(albumId.toLong()) val fis: InputStream? try { @@ -43,12 +37,12 @@ class RetroWebServer(val context: Context) : NanoHTTPD(SERVER_PORT) { return errorResponse() } return newChunkedResponse(Status.OK, MIME_TYPE_IMAGE, fis) - } else if (uri?.contains(PART_SONG) == true) { - val songId = parms?.get(PARAM_ID) ?: return errorResponse() + } else if (session?.uri?.contains(PART_SONG) == true) { + val songId = session.parameters?.get(PARAM_ID)?.get(0) ?: return errorResponse() val songUri = MusicUtil.getSongFileUri(songId.toLong()) val songPath = MusicUtil.getSongFilePath(context, songUri) val song = File(songPath) - return serveFile(headers!!, song, MIME_TYPE_AUDIO) + return serveFile(session.headers!!, song, MIME_TYPE_AUDIO) } return newFixedLengthResponse(Status.NOT_FOUND, MIME_PLAINTEXT, "Not Found") } diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/RenamePlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/RenamePlaylistDialog.kt index 79b7d2501..18a3ab714 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/RenamePlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/RenamePlaylistDialog.kt @@ -16,7 +16,6 @@ package code.name.monkey.retromusic.dialogs import android.app.Dialog import android.os.Bundle -import android.view.LayoutInflater import androidx.core.os.bundleOf import androidx.fragment.app.DialogFragment import code.name.monkey.retromusic.EXTRA_PLAYLIST_ID @@ -48,7 +47,7 @@ class RenamePlaylistDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val playlistEntity = extraNotNull(EXTRA_PLAYLIST_ID).value - val layout = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_playlist, null) + val layout = layoutInflater.inflate(R.layout.dialog_playlist, null) val inputEditText: TextInputEditText = layout.findViewById(R.id.actionNewPlaylist) val nameContainer: TextInputLayout = layout.findViewById(R.id.actionNewPlaylistContainer) nameContainer.accentColor() diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt index 339996d5b..20e2b2566 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/SongDetailDialog.kt @@ -19,60 +19,51 @@ import android.content.Context import android.os.Bundle import android.text.Spanned import android.util.Log -import android.view.LayoutInflater -import android.widget.TextView -import androidx.annotation.NonNull import androidx.core.os.bundleOf import androidx.core.text.parseAsHtml import androidx.fragment.app.DialogFragment import code.name.monkey.retromusic.EXTRA_SONG import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.databinding.DialogFileDetailsBinding import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.materialDialog import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil import org.jaudiotagger.audio.AudioFileIO import org.jaudiotagger.audio.exceptions.CannotReadException -import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException -import org.jaudiotagger.audio.exceptions.ReadOnlyFileException -import org.jaudiotagger.tag.TagException import java.io.File -import java.io.IOException class SongDetailDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val context: Context = requireContext() - val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_file_details, null) + val binding = DialogFileDetailsBinding.inflate(layoutInflater) val song = requireArguments().getParcelable(EXTRA_SONG) - val fileName: TextView = dialogView.findViewById(R.id.fileName) - val filePath: TextView = dialogView.findViewById(R.id.filePath) - val fileSize: TextView = dialogView.findViewById(R.id.fileSize) - val dateModified: TextView = dialogView.findViewById(R.id.dateModified) - val fileFormat: TextView = dialogView.findViewById(R.id.fileFormat) - val trackLength: TextView = dialogView.findViewById(R.id.trackLength) - val bitRate: TextView = dialogView.findViewById(R.id.bitrate) - val samplingRate: TextView = dialogView.findViewById(R.id.samplingRate) + with(binding) { + fileName.text = makeTextWithTitle(context, R.string.label_file_name, "-") + filePath.text = makeTextWithTitle(context, R.string.label_file_path, "-") + fileSize.text = makeTextWithTitle(context, R.string.label_file_size, "-") + fileFormat.text = makeTextWithTitle(context, R.string.label_file_format, "-") + trackLength.text = makeTextWithTitle(context, R.string.label_track_length, "-") + bitrate.text = makeTextWithTitle(context, R.string.label_bit_rate, "-") + samplingRate.text = makeTextWithTitle(context, R.string.label_sampling_rate, "-") + } - fileName.text = makeTextWithTitle(context, R.string.label_file_name, "-") - filePath.text = makeTextWithTitle(context, R.string.label_file_path, "-") - fileSize.text = makeTextWithTitle(context, R.string.label_file_size, "-") - fileFormat.text = makeTextWithTitle(context, R.string.label_file_format, "-") - trackLength.text = makeTextWithTitle(context, R.string.label_track_length, "-") - bitRate.text = makeTextWithTitle(context, R.string.label_bit_rate, "-") - samplingRate.text = makeTextWithTitle(context, R.string.label_sampling_rate, "-") if (song != null) { val songFile = File(song.data) if (songFile.exists()) { - fileName.text = makeTextWithTitle(context, R.string.label_file_name, songFile.name) - filePath.text = + binding.fileName.text = + makeTextWithTitle(context, R.string.label_file_name, songFile.name) + binding.filePath.text = makeTextWithTitle(context, R.string.label_file_path, songFile.absolutePath) - dateModified.text = makeTextWithTitle(context, R.string.label_last_modified, - MusicUtil.getDateModifiedString(songFile.lastModified())) + binding.dateModified.text = makeTextWithTitle( + context, R.string.label_last_modified, + MusicUtil.getDateModifiedString(songFile.lastModified()) + ) - fileSize.text = + binding.fileSize.text = makeTextWithTitle( context, R.string.label_file_size, @@ -82,56 +73,28 @@ class SongDetailDialog : DialogFragment() { val audioFile = AudioFileIO.read(songFile) val audioHeader = audioFile.audioHeader - fileFormat.text = + binding.fileFormat.text = makeTextWithTitle(context, R.string.label_file_format, audioHeader.format) - trackLength.text = makeTextWithTitle( + binding.trackLength.text = makeTextWithTitle( context, R.string.label_track_length, MusicUtil.getReadableDurationString((audioHeader.trackLength * 1000).toLong()) ) - bitRate.text = makeTextWithTitle( + binding.bitrate.text = makeTextWithTitle( context, R.string.label_bit_rate, audioHeader.bitRate + " kb/s" ) - samplingRate.text = + binding.samplingRate.text = makeTextWithTitle( context, R.string.label_sampling_rate, audioHeader.sampleRate + " Hz" ) - } catch (@NonNull e: CannotReadException) { + } catch (e: Exception) { Log.e(TAG, "error while reading the song file", e) // fallback - trackLength.text = makeTextWithTitle( - context, - R.string.label_track_length, - MusicUtil.getReadableDurationString(song.duration) - ) - } catch (@NonNull e: IOException) { - Log.e(TAG, "error while reading the song file", e) - trackLength.text = makeTextWithTitle( - context, - R.string.label_track_length, - MusicUtil.getReadableDurationString(song.duration) - ) - } catch (@NonNull e: TagException) { - Log.e(TAG, "error while reading the song file", e) - trackLength.text = makeTextWithTitle( - context, - R.string.label_track_length, - MusicUtil.getReadableDurationString(song.duration) - ) - } catch (@NonNull e: ReadOnlyFileException) { - Log.e(TAG, "error while reading the song file", e) - trackLength.text = makeTextWithTitle( - context, - R.string.label_track_length, - MusicUtil.getReadableDurationString(song.duration) - ) - } catch (@NonNull e: InvalidAudioFrameException) { - Log.e(TAG, "error while reading the song file", e) - trackLength.text = makeTextWithTitle( + binding.trackLength.text = makeTextWithTitle( context, R.string.label_track_length, MusicUtil.getReadableDurationString(song.duration) @@ -139,8 +102,9 @@ class SongDetailDialog : DialogFragment() { } } else { // fallback - fileName.text = makeTextWithTitle(context, R.string.label_file_name, song.title) - trackLength.text = makeTextWithTitle( + binding.fileName.text = + makeTextWithTitle(context, R.string.label_file_name, song.title) + binding.trackLength.text = makeTextWithTitle( context, R.string.label_track_length, MusicUtil.getReadableDurationString(song.duration) @@ -149,7 +113,7 @@ class SongDetailDialog : DialogFragment() { } return materialDialog(R.string.action_details) .setPositiveButton(android.R.string.ok, null) - .setView(dialogView) + .setView(binding.root) .create() .colorButtons() } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt index 60b90f6a4..c4a5c7ee8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt @@ -6,7 +6,9 @@ import android.os.Build import android.view.View import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR import android.view.WindowManager +import android.view.inputmethod.InputMethodManager import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.getSystemService import androidx.core.view.* import androidx.fragment.app.FragmentActivity import code.name.monkey.appthemehelper.util.ColorUtil @@ -221,4 +223,13 @@ fun AppCompatActivity.setStatusBarColorPreMarshmallow(color: Int) { } else { window.statusBarColor = ColorUtil.darkenColor(color) } +} + +fun AppCompatActivity.hideSoftKeyboard() { + val currentFocus: View? = currentFocus + if (currentFocus != null) { + val inputMethodManager = + getSystemService() + inputMethodManager?.hideSoftInputFromWindow(currentFocus.windowToken, 0) + } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt index c31a3e675..11f407290 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt @@ -131,12 +131,12 @@ fun Slider.accent() { fun Button.accentTextColor() { if (materialYou) return - setTextColor(ThemeStore.accentColor(App.getContext())) + setTextColor(context.accentColor()) } fun MaterialButton.accentBackgroundColor() { if (materialYou) return - backgroundTintList = ColorStateList.valueOf(ThemeStore.accentColor(App.getContext())) + backgroundTintList = ColorStateList.valueOf(context.accentColor()) } fun MaterialButton.accentOutlineColor() { diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/IntentExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/IntentExtensions.kt index 1d7f25cab..e91e81347 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/IntentExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/IntentExtensions.kt @@ -1,10 +1,12 @@ package code.name.monkey.retromusic.extensions import android.app.Activity +import android.content.Context import android.content.Intent import android.net.Uri import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.net.toUri import androidx.fragment.app.Fragment import java.io.OutputStream @@ -29,4 +31,16 @@ fun Fragment.createNewFile( } startForResult.launch(intent) +} + +fun Context.openUrl(url: String) { + val i = Intent(Intent.ACTION_VIEW) + i.data = url.toUri() + i.flags = Intent.FLAG_ACTIVITY_NEW_TASK + startActivity(i) +} + + +fun Fragment.openUrl(url: String) { + requireContext().openUrl(url) } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt index 116dba855..d6c439905 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/about/AboutFragment.kt @@ -14,12 +14,10 @@ */ package code.name.monkey.retromusic.fragments.about -import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.view.View import androidx.core.app.ShareCompat -import androidx.core.net.toUri import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.recyclerview.widget.DefaultItemAnimator @@ -29,6 +27,7 @@ import code.name.monkey.retromusic.Constants import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.ContributorAdapter import code.name.monkey.retromusic.databinding.FragmentAboutBinding +import code.name.monkey.retromusic.extensions.openUrl import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.RetroUtil @@ -53,13 +52,6 @@ class AboutFragment : Fragment(R.layout.fragment_about), View.OnClickListener { } } - private fun openUrl(url: String) { - val i = Intent(Intent.ACTION_VIEW) - i.data = url.toUri() - i.flags = Intent.FLAG_ACTIVITY_NEW_TASK - startActivity(i) - } - private fun setUpView() { binding.aboutContent.cardRetroInfo.appGithub.setOnClickListener(this) binding.aboutContent.cardRetroInfo.faqLink.setOnClickListener(this) 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 72b54775c..2014bf33f 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 @@ -117,7 +117,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det mainActivity.setSupportActionBar(binding.toolbar) binding.toolbar.title = " " - binding.albumCoverContainer.setTransitionName(arguments.extraAlbumId.toString()) + binding.albumCoverContainer.transitionName = arguments.extraAlbumId.toString() postponeEnterTransition() detailsViewModel.getAlbum().observe(viewLifecycleOwner) { requireView().doOnPreDraw { @@ -125,10 +125,10 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det } albumArtistExists = !it.albumArtist.isNullOrEmpty() showAlbum(it) - if (albumArtistExists) { - binding.artistImage.setTransitionName(album.albumArtist) + binding.artistImage.transitionName = if (albumArtistExists) { + album.albumArtist } else { - binding.artistImage.setTransitionName(album.artistId.toString()) + album.artistId.toString() } } @@ -308,7 +308,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det .load( RetroGlideExtension.getArtistModel( artist, - PreferenceUtil.isAllowedToDownloadMetadata() + PreferenceUtil.isAllowedToDownloadMetadata(requireContext()) ) ) .artistImageOptions(artist) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt index f0d0c7f75..16537d90b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt @@ -88,7 +88,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm mainActivity.addMusicServiceEventListener(detailsViewModel) mainActivity.setSupportActionBar(binding.toolbar) binding.toolbar.title = null - binding.artistCoverContainer.setTransitionName((artistId ?: artistName).toString()) + binding.artistCoverContainer.transitionName = (artistId ?: artistName).toString() postponeEnterTransition() detailsViewModel.getArtist().observe(viewLifecycleOwner) { requireView().doOnPreDraw { @@ -146,7 +146,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm } this.artist = artist loadArtistImage(artist) - if (RetroUtil.isAllowedToDownloadMetadata(requireContext())) { + if (PreferenceUtil.isAllowedToDownloadMetadata(requireContext())) { loadBiography(artist.name) } binding.artistTitle.text = artist.name diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt index fa6b299a9..f3b67abec 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupViewModel.kt @@ -1,7 +1,6 @@ package code.name.monkey.retromusic.fragments.backup import android.app.Activity -import android.content.Context import android.content.Intent import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index 5bb7bdbbe..4d3a63875 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -30,6 +30,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.commit import androidx.fragment.app.replace import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener import code.name.monkey.retromusic.fragments.other.VolumeFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -224,8 +225,7 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi } childFragmentManager.executePendingTransactions() } - volumeFragment = - childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as? VolumeFragment + volumeFragment = whichFragment(R.id.volumeFragmentContainer) } override fun onResume() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 3dd8fd76a..845b32583 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -359,15 +359,6 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme val TAG: String = AbsPlayerFragment::class.java.simpleName const val VISIBILITY_ANIM_DURATION: Long = 300 } - - protected fun getUpNextAndQueueTime(): String { - val duration = MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.position) - - return MusicUtil.buildInfoString( - resources.getString(R.string.up_next), - MusicUtil.getReadableDurationString(duration) - ) - } } fun goToArtist(activity: Activity) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt index dd108ee6a..06f94065b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt @@ -56,7 +56,7 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_ setHasOptionsMenu(true) mainActivity.addMusicServiceEventListener(detailsViewModel) mainActivity.setSupportActionBar(binding.toolbar) - binding.container.setTransitionName("genre") + binding.container.transitionName = "genre" genre = arguments.extraGenre binding.toolbar.title = arguments.extraGenre.name setupRecyclerView() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt index e64fbfab6..099c0b9b4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt @@ -40,10 +40,7 @@ import code.name.monkey.retromusic.activities.tageditor.TagWriter import code.name.monkey.retromusic.databinding.FragmentLyricsBinding import code.name.monkey.retromusic.databinding.FragmentNormalLyricsBinding import code.name.monkey.retromusic.databinding.FragmentSyncedLyricsBinding -import code.name.monkey.retromusic.extensions.accentColor -import code.name.monkey.retromusic.extensions.materialDialog -import code.name.monkey.retromusic.extensions.textColorSecondary -import code.name.monkey.retromusic.extensions.uri +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper @@ -52,7 +49,6 @@ import code.name.monkey.retromusic.model.AudioTagInfo import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.FileUtils import code.name.monkey.retromusic.util.LyricUtil -import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.UriUtil import com.afollestad.materialdialogs.input.input import com.google.android.material.color.MaterialColors @@ -149,7 +145,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { exitTransition = Fade() lyricsSectionsAdapter = LyricsSectionsAdapter(requireActivity()) _binding = FragmentLyricsBinding.bind(view) - binding.container.setTransitionName("lyrics") + binding.container.transitionName = "lyrics" setupWakelock() setupViews() @@ -225,8 +221,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { return true } if (item.itemId == R.id.action_search) { - RetroUtil.openUrl( - requireActivity(), when (binding.lyricsPager.currentItem) { + openUrl(when (binding.lyricsPager.currentItem) { 0 -> syairSearchLrcUrl 1 -> googleSearchLrcUrl else -> googleSearchLrcUrl diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt index c12ec2183..a67eadd9c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt @@ -48,9 +48,9 @@ class AdaptiveFragment : AbsPlayerFragment(R.layout.fragment_adaptive_player) { private fun setUpSubFragments() { playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as AdaptivePlaybackControlsFragment + whichFragment(R.id.playbackControlsFragment) as AdaptivePlaybackControlsFragment val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + whichFragment(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment playerAlbumCoverFragment.apply { removeSlideEffect() setCallbacks(this@AdaptiveFragment) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt index 675e85e4d..e784eff4b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt @@ -27,6 +27,7 @@ import code.name.monkey.retromusic.NEW_BLUR_AMOUNT import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentBlurBinding import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.glide.* @@ -62,10 +63,9 @@ class BlurPlayerFragment : AbsPlayerFragment(R.layout.fragment_blur), } private fun setUpSubFragments() { - playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as BlurPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playbackControlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt index 1a6c7acb7..cea1bf027 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt @@ -22,6 +22,7 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentCardPlayerBinding import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment @@ -87,10 +88,9 @@ class CardFragment : AbsPlayerFragment(R.layout.fragment_card_player) { } private fun setUpSubFragments() { - playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as CardPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playbackControlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) playerAlbumCoverFragment.removeSlideEffect() } @@ -117,14 +117,4 @@ class CardFragment : AbsPlayerFragment(R.layout.fragment_card_player) { super.onDestroyView() _binding = null } - - companion object { - - fun newInstance(): PlayerFragment { - val args = Bundle() - val fragment = PlayerFragment() - fragment.arguments = args - return fragment - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt index ef45e01ca..3a5265098 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt @@ -26,6 +26,7 @@ import code.name.monkey.retromusic.NEW_BLUR_AMOUNT import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentCardBlurPlayerBinding import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment @@ -98,8 +99,8 @@ class CardBlurFragment : AbsPlayerFragment(R.layout.fragment_card_blur_player), private fun setUpSubFragments() { playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as CardBlurPlaybackControlsFragment - (childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment?)?.setCallbacks( + whichFragment(R.id.playbackControlsFragment) as CardBlurPlaybackControlsFragment + (whichFragment(R.id.playerAlbumCoverFragment) as? PlayerAlbumCoverFragment)?.setCallbacks( this ) } 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 6db36c55c..50520dc60 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 @@ -35,10 +35,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.RetroBottomSheetBehavior import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.databinding.FragmentClassicPlayerBinding -import code.name.monkey.retromusic.extensions.getSongInfo -import code.name.monkey.retromusic.extensions.hide -import code.name.monkey.retromusic.extensions.show -import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment @@ -131,8 +128,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player hideVolumeIfAvailable() setupRecyclerView() - val coverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + val coverFragment: PlayerAlbumCoverFragment = whichFragment(R.id.playerAlbumCoverFragment) coverFragment.setCallbacks(this) getQueuePanel().addBottomSheetCallback(bottomSheetCallbackList) @@ -174,7 +170,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player } childFragmentManager.executePendingTransactions() volumeFragment = - childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment? + whichFragment(R.id.volumeFragmentContainer) as VolumeFragment? } } @@ -368,7 +364,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player } private fun setupPanel() { - if (!binding.playerContainer.isLaidOut() || binding.playerContainer.isLayoutRequested) { + if (!binding.playerContainer.isLaidOut || binding.playerContainer.isLayoutRequested) { binding.playerContainer.addOnLayoutChangeListener(this) return } @@ -419,7 +415,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0) } - fun setUpProgressSlider() { + private fun setUpProgressSlider() { binding.playerControlsContainer.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt index 4197affde..761daa039 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt @@ -24,6 +24,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentColorPlayerBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -110,15 +111,14 @@ class ColorFragment : AbsPlayerFragment(R.layout.fragment_color_player) { _binding = FragmentColorPlayerBinding.bind(view) setUpSubFragments() setUpPlayerToolbar() - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playbackControlsFragment) playerAlbumCoverFragment.setCallbacks(this) playerToolbar().drawAboveSystemBars() } private fun setUpSubFragments() { - playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as ColorPlaybackControlsFragment + playbackControlsFragment = whichFragment(R.id.playbackControlsFragment) } private fun setUpPlayerToolbar() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt index 1bddc630a..468ce3c1b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt @@ -22,6 +22,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentFitBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -90,10 +91,9 @@ class FitFragment : AbsPlayerFragment(R.layout.fragment_fit) { } private fun setUpSubFragments() { - playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as FitPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playbackControlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt index 971ff2459..bd84e4eca 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt @@ -27,6 +27,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentFlatPlayerBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -52,10 +53,9 @@ class FlatPlayerFragment : AbsPlayerFragment(R.layout.fragment_flat_player) { private fun setUpSubFragments() { - controlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as FlatPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + controlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } 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 8be7e32de..dbd3afb97 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 @@ -132,7 +132,7 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play } private fun setupPanel() { - if (!binding.colorBackground.isLaidOut() || binding.colorBackground.isLayoutRequested) { + if (!binding.colorBackground.isLaidOut || binding.colorBackground.isLayoutRequested) { binding.colorBackground.addOnLayoutChangeListener(this) return } @@ -309,7 +309,7 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play } childFragmentManager.executePendingTransactions() volumeFragment = - childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment? + whichFragment(R.id.volumeFragmentContainer) as VolumeFragment? } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt index b57654fad..a11e8060c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt @@ -26,6 +26,7 @@ import code.name.monkey.retromusic.databinding.FragmentMaterialBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment @@ -134,10 +135,9 @@ class MaterialFragment : AbsPlayerFragment(R.layout.fragment_material) { } private fun setUpSubFragments() { - playbackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as MaterialControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playbackControlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playbackControlsFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt index fd3327ca9..0144ae835 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt @@ -27,10 +27,7 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.SNOWFALL import code.name.monkey.retromusic.databinding.FragmentPlayerBinding -import code.name.monkey.retromusic.extensions.colorControlNormal -import code.name.monkey.retromusic.extensions.drawAboveSystemBars -import code.name.monkey.retromusic.extensions.isColorLight -import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -141,10 +138,9 @@ class PlayerFragment : AbsPlayerFragment(R.layout.fragment_player), } private fun setUpSubFragments() { - controlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PlayerPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + controlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt index dc5116399..2d17d5a99 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peek/PeekPlayerFragment.kt @@ -58,10 +58,10 @@ class PeekPlayerFragment : AbsPlayerFragment(R.layout.fragment_peek_player) { private fun setUpSubFragments() { controlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PeekPlayerControlFragment + whichFragment(R.id.playbackControlsFragment) as PeekPlayerControlFragment val coverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + whichFragment(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment coverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt index 894fc03c0..fbbb7cd26 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt @@ -22,6 +22,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentPlainPlayerBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.base.goToAlbum import code.name.monkey.retromusic.fragments.base.goToArtist @@ -89,10 +90,9 @@ class PlainPlayerFragment : AbsPlayerFragment(R.layout.fragment_plain_player) { } private fun setUpSubFragments() { - plainPlaybackControlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PlainPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + plainPlaybackControlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt index b2bdd469a..722ab28ba 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt @@ -22,6 +22,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentSimplePlayerBinding import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.drawAboveSystemBars +import code.name.monkey.retromusic.extensions.whichFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -56,11 +57,10 @@ class SimplePlayerFragment : AbsPlayerFragment(R.layout.fragment_simple_player) } private fun setUpSubFragments() { - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) - controlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as SimplePlaybackControlsFragment + controlsFragment = whichFragment(R.id.playbackControlsFragment) } override fun onShow() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt index 9ac50de1b..021f5ef82 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt @@ -29,10 +29,7 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentTinyPlayerBinding -import code.name.monkey.retromusic.extensions.drawAboveSystemBars -import code.name.monkey.retromusic.extensions.getSongInfo -import code.name.monkey.retromusic.extensions.hide -import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.base.goToAlbum import code.name.monkey.retromusic.fragments.base.goToArtist @@ -153,10 +150,9 @@ class TinyPlayerFragment : AbsPlayerFragment(R.layout.fragment_tiny_player), } private fun setUpSubFragments() { - controlsFragment = - childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as TinyPlaybackControlsFragment - val playerAlbumCoverFragment = - childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + controlsFragment = whichFragment(R.id.playbackControlsFragment) + val playerAlbumCoverFragment: PlayerAlbumCoverFragment = + whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment.setCallbacks(this) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt index d48a5025f..4e21eea24 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt @@ -59,7 +59,7 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) setHasOptionsMenu(true) mainActivity.setSupportActionBar(binding.toolbar) - binding.container.setTransitionName("playlist") + binding.container.transitionName = "playlist" playlist = arguments.extraPlaylist binding.toolbar.title = playlist.playlistEntity.playlistName setUpRecyclerView() diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt index 356a829f6..1260892a6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt @@ -42,7 +42,7 @@ class ArtistImageFetcher( override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { try { if (!MusicUtil.isArtistNameUnknown(model.artist.name) && - PreferenceUtil.isAllowedToDownloadMetadata() + PreferenceUtil.isAllowedToDownloadMetadata(context) ) { val artists = model.artist.name.split(",", "&") response = deezerService.getArtistImage(artists[0]) diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/SearchQueryHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/SearchQueryHelper.kt index 9bd72fa58..06c76294d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/SearchQueryHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/SearchQueryHelper.kt @@ -139,8 +139,6 @@ object SearchQueryHelper : KoinComponent { arrayOf(query.lowercase()) ) ) - return if (songs.isNotEmpty()) { - songs - } else ArrayList() + return songs.ifEmpty { ArrayList() } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcView.java b/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcView.java index 60f904bdb..77fd1f1e2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcView.java +++ b/app/src/main/java/code/name/monkey/retromusic/lyrics/LrcView.java @@ -35,6 +35,8 @@ import android.view.View; import android.view.animation.LinearInterpolator; import android.widget.Scroller; +import androidx.core.content.res.ResourcesCompat; + import java.io.File; import java.util.ArrayList; import java.util.Collections; diff --git a/app/src/main/java/code/name/monkey/retromusic/misc/LagTracker.java b/app/src/main/java/code/name/monkey/retromusic/misc/LagTracker.java deleted file mode 100755 index 983081184..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/misc/LagTracker.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by - * the Free Software Foundation either version 3 of the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - */ - -package code.name.monkey.retromusic.misc; - -import android.util.Log; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -public class LagTracker { - private static Map mMap; - private static LagTracker mSingleton; - private boolean mEnabled = true; - - private LagTracker() { - mMap = new HashMap<>(); - } - - public static LagTracker get() { - if (mSingleton == null) { - mSingleton = new LagTracker(); - } - return mSingleton; - } - - private void print(String str, long j) { - long toMillis = TimeUnit.NANOSECONDS.toMillis(j); - Log.d( - "LagTracker", - "[" - + str - + " completed in]: " - + j - + " ns (" - + toMillis - + "ms, " - + TimeUnit.NANOSECONDS.toSeconds(j) - + "s)"); - } - - public LagTracker disable() { - this.mEnabled = false; - return this; - } - - public LagTracker enable() { - this.mEnabled = true; - return this; - } - - public void end(String str) { - long nanoTime = System.nanoTime(); - if (this.mEnabled) { - if (mMap.containsKey(str)) { - print(str, nanoTime - mMap.get(str)); - mMap.remove(str); - return; - } - throw new IllegalStateException("No start time found for " + str); - } else if (!mMap.isEmpty()) { - mMap.clear(); - } - } - - public void start(String str) { - long nanoTime = System.nanoTime(); - if (this.mEnabled) { - mMap.put(str, nanoTime); - } else if (!mMap.isEmpty()) { - mMap.clear(); - } - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/network/conversion/LyricsConverterFactory.kt b/app/src/main/java/code/name/monkey/retromusic/network/conversion/LyricsConverterFactory.kt index 1103653c4..03a8f4c77 100644 --- a/app/src/main/java/code/name/monkey/retromusic/network/conversion/LyricsConverterFactory.kt +++ b/app/src/main/java/code/name/monkey/retromusic/network/conversion/LyricsConverterFactory.kt @@ -25,9 +25,9 @@ import java.lang.reflect.Type class LyricsConverterFactory : Converter.Factory() { override fun responseBodyConverter( - type: Type?, - annotations: Array?, - retrofit: Retrofit? + type: Type, + annotations: Array, + retrofit: Retrofit ): Converter? { return if (String::class.java == type) { Converter { value -> value.string() } @@ -35,10 +35,10 @@ class LyricsConverterFactory : Converter.Factory() { } override fun requestBodyConverter( - type: Type?, - parameterAnnotations: Array?, - methodAnnotations: Array?, - retrofit: Retrofit? + type: Type, + parameterAnnotations: Array, + methodAnnotations: Array, + retrofit: Retrofit ): Converter<*, RequestBody>? { return if (String::class.java == type) { diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index e39ddf6bf..d656df16e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -392,7 +392,7 @@ class MusicService : MediaBrowserServiceCompat(), wakeLock?.acquire(milli) } - var pausedByZeroVolume = false + private var pausedByZeroVolume = false override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { if (isPauseOnZeroVolume) { if (isPlaying && currentVolume < 1) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ColorAnimUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/ColorAnimUtil.kt deleted file mode 100644 index 81cb66de6..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/ColorAnimUtil.kt +++ /dev/null @@ -1,19 +0,0 @@ -package code.name.monkey.retromusic.util - -import android.animation.ArgbEvaluator -import android.animation.ValueAnimator - -class ColorAnimUtil { - companion object { - fun createColorAnimator( - fromColor: Int, - toColor: Int, - mDuration: Long = 300 - ): ValueAnimator { - return ValueAnimator.ofInt(fromColor, toColor).apply { - setEvaluator(ArgbEvaluator()) - duration = mDuration - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/util/Compressor.java b/app/src/main/java/code/name/monkey/retromusic/util/Compressor.java deleted file mode 100644 index 6259a52bf..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/util/Compressor.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by - * the Free Software Foundation either version 3 of the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - */ - -package code.name.monkey.retromusic.util; - -import android.content.Context; -import android.graphics.Bitmap; - -import java.io.File; -import java.io.IOException; - -/** - * Created on : June 18, 2016 Author : zetbaitsu Name : Zetra GitHub : https://github.com/zetbaitsu - */ -public class Compressor { - // max width and height values of the compressed image is taken as 612x816 - private int maxWidth = 612; - private int maxHeight = 816; - private Bitmap.CompressFormat compressFormat = Bitmap.CompressFormat.JPEG; - private int quality = 80; - private String destinationDirectoryPath; - - public Compressor(Context context) { - destinationDirectoryPath = context.getCacheDir().getPath() + File.separator + "images"; - } - - public Compressor setMaxWidth(int maxWidth) { - this.maxWidth = maxWidth; - return this; - } - - public Compressor setMaxHeight(int maxHeight) { - this.maxHeight = maxHeight; - return this; - } - - public Compressor setCompressFormat(Bitmap.CompressFormat compressFormat) { - this.compressFormat = compressFormat; - return this; - } - - public Compressor setQuality(int quality) { - this.quality = quality; - return this; - } - - public Compressor setDestinationDirectoryPath(String destinationDirectoryPath) { - this.destinationDirectoryPath = destinationDirectoryPath; - return this; - } - - public File compressToFile(File imageFile) throws IOException { - return compressToFile(imageFile, imageFile.getName()); - } - - public File compressToFile(File imageFile, String compressedFileName) throws IOException { - return ImageUtil.compressImage( - imageFile, - maxWidth, - maxHeight, - compressFormat, - quality, - destinationDirectoryPath + File.separator + compressedFileName); - } - - public Bitmap compressToBitmap(File imageFile) throws IOException { - return ImageUtil.decodeSampledBitmapFromFile(imageFile, maxWidth, maxHeight); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ImageUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/ImageUtil.java index d10a4232f..d67f0721c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ImageUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/ImageUtil.java @@ -24,13 +24,13 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; -import android.media.ExifInterface; import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.res.ResourcesCompat; +import androidx.exifinterface.media.ExifInterface; import java.io.File; import java.io.FileOutputStream; 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 62b364e8d..b37b01710 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 @@ -268,15 +268,14 @@ object MusicUtil : KoinComponent { ) } - fun getSongFilePath(context: Context, uri: Uri): String? { + fun getSongFilePath(context: Context, uri: Uri): String { val projection = arrayOf(MediaStore.MediaColumns.DATA) - return context.contentResolver.query(uri, projection, null, null, null)?.use { + context.contentResolver.query(uri, projection, null, null, null)?.use { if (it.moveToFirst()) { - it.getString(0) - } else { - "" + return it.getString(0) } } + return "" } fun getTotalDuration(songs: List): Long { 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 15b9722ee..cc4124a90 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 @@ -71,7 +71,7 @@ class PackageValidator( /** * Checks whether the caller attempting to connect to a [MediaBrowserServiceCompat] is known. - * See [MusicService.onGetRoot] for where this is utilized. + * See [MediaBrowserServiceCompat.onGetRoot] for where this is utilized. * * @param callingPackage The package name of the caller. * @param callingUid The user id of the caller. diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index e71d3f683..589795243 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -1,8 +1,8 @@ package code.name.monkey.retromusic.util +import android.content.Context import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.net.ConnectivityManager -import android.net.NetworkInfo import androidx.core.content.edit import androidx.core.content.getSystemService import androidx.preference.PreferenceManager @@ -328,15 +328,12 @@ object PreferenceUtil { val isLockScreen get() = sharedPreferences.getBoolean(LOCK_SCREEN, false) - fun isAllowedToDownloadMetadata(): Boolean { + fun isAllowedToDownloadMetadata(context: Context): Boolean { return when (autoDownloadImagesPolicy) { "always" -> true "only_wifi" -> { - val connectivityManager = App.getContext().getSystemService() - var netInfo: NetworkInfo? = null - if (connectivityManager != null) { - netInfo = connectivityManager.activeNetworkInfo - } + val connectivityManager = context.getSystemService() + val netInfo = connectivityManager?.activeNetworkInfo netInfo != null && netInfo.type == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting } "never" -> false 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 8005ab2b4..99ccdfacd 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 @@ -195,13 +195,6 @@ public class RetroUtil { >= 600; } - public static void openUrl(@NonNull Activity context, @NonNull String str) { - Intent intent = new Intent("android.intent.action.VIEW"); - intent.setData(Uri.parse(str)); - intent.setFlags(268435456); - context.startActivity(intent); - } - public static void setAllowDrawUnderNavigationBar(Window window) { window.setNavigationBarColor(Color.TRANSPARENT); window