This commit is contained in:
h4h13 2019-07-22 13:23:42 +05:30
commit b64a1c86a8
103 changed files with 1129 additions and 889 deletions

6
FAQ.md
View file

@ -8,8 +8,7 @@ You can opt-in for the beta build by clicking on this link: https://play.google.
- STEP 4: You have to copy or move the file into a location on the SD Card: whatever_sdcard/RetroMusic/lyrics/ and paste inside your ".lrc" file in there. - STEP 4: You have to copy or move the file into a location on the SD Card: whatever_sdcard/RetroMusic/lyrics/ and paste inside your ".lrc" file in there.
#### Q: Why isn't the artist's image downloading? #### Q: Why isn't the artist's image downloading?
STEP 1: Settings -> Images -> Auto-download artist images -> Always Last.fm has disabled the download of artist's images for the time being, whether functionality for this will be restored in future is uncertain.
STEP 2: Open the artists tab and wait some time for the images to download.
#### Q: How do I change the theme? #### Q: How do I change the theme?
Settings -> Look and feel -> Select your theme. Settings -> Look and feel -> Select your theme.
@ -35,8 +34,5 @@ Clear the app's cache and data.
##### Q: My app is crashing, how do i fix this? (Sorry, settings have changed internally) ##### Q: My app is crashing, how do i fix this? (Sorry, settings have changed internally)
Reinstalling the app should fix this issue. Reinstalling the app should fix this issue.
##### Q: Artist images are not loading, why?
The Last.fm service has a limited number of requests of download data it can handle (artist images). If that request limit is exceeded, it will not download for some time.
##### Q: Why has all the text gone white/dissapeared? ##### Q: Why has all the text gone white/dissapeared?
Change the theme to Black or Dark and change it back to what you had before. Change the theme to Black or Dark and change it back to what you had before.

View file

@ -17,7 +17,6 @@ Retro Music is an open source, local music player for Android.
- Volume controls - Volume controls
- Blacklist - Blacklist
- Album artist support - Album artist support
- Auto-download artist images from Last.fm
#### Download #### Download

View file

@ -31,8 +31,8 @@ android {
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
applicationId "code.name.monkey.retromusic" applicationId "code.name.monkey.retromusic"
versionCode 336 versionCode 340
versionName '3.2.100' versionName '3.2.125'
multiDexEnabled true multiDexEnabled true
@ -132,9 +132,9 @@ dependencies {
implementation 'com.google.android.material:material:1.1.0-alpha07' implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'com.google.android.material:material:1.1.0-alpha07' implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:retrofit:2.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.0'
implementation 'com.afollestad.material-dialogs:core:3.0.0-alpha1' implementation 'com.afollestad.material-dialogs:core:3.0.0-alpha1'
implementation 'com.afollestad.material-dialogs:input:3.0.0-alpha1' implementation 'com.afollestad.material-dialogs:input:3.0.0-alpha1'
@ -161,7 +161,6 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:3.4.0.201406110918-r' implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:3.4.0.201406110918-r'
implementation 'com.github.jetradarmobile:android-snowfall:1.2.0'
implementation 'com.github.takahirom.downloadable.calligraphy:downloadable-calligraphy:0.1.3' implementation 'com.github.takahirom.downloadable.calligraphy:downloadable-calligraphy:0.1.3'
implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0' implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0'
implementation 'com.github.kabouzeid:RecyclerView-FastScroll:1.0.16-kmod' implementation 'com.github.kabouzeid:RecyclerView-FastScroll:1.0.16-kmod'

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,7 @@
package code.name.monkey.retromusic.activities package code.name.monkey.retromusic.activities
import android.content.Intent import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.transition.Slide import android.transition.Slide
@ -70,7 +71,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
setupWindowTransition() setupWindowTransition()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
toggleBottomNavigationView(true) toggleBottomNavigationView(true)
collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this)) contentContainer?.setCardBackgroundColor( ColorStateList.valueOf(ThemeStore.primaryColor(this)))
setLightNavigationBar(true) setLightNavigationBar(true)
setNavigationbarColorAuto() setNavigationbarColorAuto()
@ -111,7 +112,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac
supportActionBar!!.title = null supportActionBar!!.title = null
val primaryColor = ThemeStore.primaryColor(this) val primaryColor = ThemeStore.primaryColor(this)
TintHelper.setTintAuto(contentContainer!!, primaryColor, true) //TintHelper.setTintAuto(contentContainer!!, primaryColor, true)
if (collapsingToolbarLayout != null) { if (collapsingToolbarLayout != null) {
collapsingToolbarLayout!!.apply { collapsingToolbarLayout!!.apply {

View file

@ -2,6 +2,7 @@ package code.name.monkey.retromusic.activities
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
@ -17,7 +18,10 @@ import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.* import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
import code.name.monkey.retromusic.adapter.album.AlbumAdapter import code.name.monkey.retromusic.adapter.album.AlbumAdapter
@ -68,7 +72,8 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
setDrawUnderStatusBar() setDrawUnderStatusBar()
setupWindowTransitions() setupWindowTransitions()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this)) //collapsingToolbarLayout?.setBackgroundColor(ThemeStore.primaryColor(this))
contentContainer?.setCardBackgroundColor(ColorStateList.valueOf(ThemeStore.primaryColor(this)))
toggleBottomNavigationView(true) toggleBottomNavigationView(true)
setNavigationbarColorAuto() setNavigationbarColorAuto()
setLightNavigationBar(true) setLightNavigationBar(true)
@ -114,7 +119,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
private fun setupToolbarMarginHeight() { private fun setupToolbarMarginHeight() {
val primaryColor = ThemeStore.primaryColor(this) val primaryColor = ThemeStore.primaryColor(this)
TintHelper.setTintAuto(contentContainer!!, primaryColor, true)
collapsingToolbarLayout?.let { collapsingToolbarLayout?.let {
it.setContentScrimColor(primaryColor) it.setContentScrimColor(primaryColor)
it.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor)) it.setStatusBarScrimColor(ColorUtil.darkenColor(primaryColor))
@ -198,7 +203,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
} }
private fun getArtist(): Artist { private fun getArtist(): Artist {
return this.artist; return this.artist
} }
private fun setArtist(artist: Artist) { private fun setArtist(artist: Artist) {
@ -327,7 +332,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac
R.id.action_reset_artist_image -> { R.id.action_reset_artist_image -> {
Toast.makeText(this@ArtistDetailActivity, resources.getString(R.string.updating), Toast.makeText(this@ArtistDetailActivity, resources.getString(R.string.updating),
Toast.LENGTH_SHORT).show() Toast.LENGTH_SHORT).show()
CustomArtistImageUtil.getInstance(this@ArtistDetailActivity).resetCustomArtistImage(artist!!) CustomArtistImageUtil.getInstance(this@ArtistDetailActivity).resetCustomArtistImage(artist)
forceDownload = true forceDownload = true
return true return true
} }

View file

@ -1,18 +1,20 @@
package code.name.monkey.retromusic.activities package code.name.monkey.retromusic.activities
import android.app.Activity import android.app.Activity
import android.content.* import android.content.ContentUris
import android.content.Context
import android.content.ContextWrapper
import android.content.Intent
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.DocumentsContract import android.provider.DocumentsContract
import android.provider.MediaStore import android.provider.MediaStore.Images.Media
import android.provider.MediaStore.Images.Media.getBitmap import android.provider.MediaStore.Images.Media.getBitmap
import android.text.TextUtils import android.text.TextUtils
import android.view.MenuItem import android.view.MenuItem
import android.widget.Toast import android.widget.Toast
import androidx.core.content.FileProvider
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.appthemehelper.util.MaterialUtil
@ -56,10 +58,10 @@ class UserInfoActivity : AbsBaseActivity() {
name.setText(PreferenceUtil.getInstance().userName) name.setText(PreferenceUtil.getInstance().userName)
bio.setText(PreferenceUtil.getInstance().userBio) bio.setText(PreferenceUtil.getInstance().userBio)
if (!PreferenceUtil.getInstance().profileImage.isEmpty()) { if (PreferenceUtil.getInstance().profileImage.isNotEmpty()) {
loadImageFromStorage(PreferenceUtil.getInstance().profileImage) loadImageFromStorage(PreferenceUtil.getInstance().profileImage)
} }
if (!PreferenceUtil.getInstance().bannerImage.isEmpty()) { if (PreferenceUtil.getInstance().bannerImage.isNotEmpty()) {
loadBannerFromStorage(PreferenceUtil.getInstance().bannerImage) loadBannerFromStorage(PreferenceUtil.getInstance().bannerImage)
} }
userImage.setOnClickListener { userImage.setOnClickListener {
@ -129,7 +131,7 @@ class UserInfoActivity : AbsBaseActivity() {
private fun selectBannerImage() { private fun selectBannerImage() {
if (TextUtils.isEmpty(PreferenceUtil.getInstance().bannerImage)) { if (TextUtils.isEmpty(PreferenceUtil.getInstance().bannerImage)) {
val pickImageIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) val pickImageIntent = Intent(Intent.ACTION_PICK, Media.EXTERNAL_CONTENT_URI)
pickImageIntent.type = "image/*" pickImageIntent.type = "image/*"
//pickImageIntent.putExtra("crop", "true") //pickImageIntent.putExtra("crop", "true")
pickImageIntent.putExtra("outputX", 1290) pickImageIntent.putExtra("outputX", 1290)
@ -147,7 +149,7 @@ class UserInfoActivity : AbsBaseActivity() {
private fun pickNewPhoto() { private fun pickNewPhoto() {
val pickImageIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) val pickImageIntent = Intent(Intent.ACTION_PICK, Media.EXTERNAL_CONTENT_URI)
pickImageIntent.type = "image/*" pickImageIntent.type = "image/*"
pickImageIntent.putExtra("crop", "true") pickImageIntent.putExtra("crop", "true")
pickImageIntent.putExtra("outputX", 512) pickImageIntent.putExtra("outputX", 512)
@ -163,42 +165,30 @@ class UserInfoActivity : AbsBaseActivity() {
if (resultCode == Activity.RESULT_OK && data != null) { if (resultCode == Activity.RESULT_OK && data != null) {
when (requestCode) { when (requestCode) {
PICK_IMAGE_REQUEST -> { PICK_IMAGE_REQUEST -> {
val uri = data.data
try { try {
val bitmap = getResizedBitmap(getBitmap(contentResolver, uri), PROFILE_ICON_SIZE) data.data?.let {
val bitmap = getResizedBitmap(getBitmap(contentResolver, it), PROFILE_ICON_SIZE)
val profileImagePath = saveToInternalStorage(bitmap, USER_PROFILE) val profileImagePath = saveToInternalStorage(bitmap, USER_PROFILE)
PreferenceUtil.getInstance().saveProfileImage(profileImagePath) PreferenceUtil.getInstance().saveProfileImage(profileImagePath)
loadImageFromStorage(profileImagePath) loadImageFromStorage(profileImagePath)
}
} catch (e: IOException) { } catch (e: IOException) {
e.printStackTrace() e.printStackTrace()
} }
} }
CROP_IMAGE_REQUEST -> {
val extras: Bundle = data.extras!!
val selectedBitmap: Bitmap = extras.getParcelable("data")
val profileImagePath = saveToInternalStorage(selectedBitmap, USER_PROFILE)
PreferenceUtil.getInstance().saveProfileImage(profileImagePath)
loadImageFromStorage(profileImagePath)
}
PICK_BANNER_REQUEST -> { PICK_BANNER_REQUEST -> {
val uri = data.data
try { try {
val bitmap = getBitmap(contentResolver, uri) data.data?.let {
val bitmap = getBitmap(contentResolver, it)
val profileImagePath = saveToInternalStorage(bitmap, USER_BANNER) val profileImagePath = saveToInternalStorage(bitmap, USER_BANNER)
PreferenceUtil.getInstance().setBannerImagePath(profileImagePath) PreferenceUtil.getInstance().setBannerImagePath(profileImagePath)
loadBannerFromStorage(profileImagePath) loadBannerFromStorage(profileImagePath)
}
} catch (e: IOException) { } catch (e: IOException) {
e.printStackTrace() e.printStackTrace()
} }
} }
CROP_BANNER_REQUEST -> {
val selectedBitmap: Bitmap? = data.extras?.getParcelable("date")
val profileImagePath = selectedBitmap?.let { saveToInternalStorage(it, USER_BANNER) }
profileImagePath?.let {
PreferenceUtil.getInstance().saveProfileImage(it)
loadImageFromStorage(it)
}
}
} }
} }
} }
@ -213,8 +203,8 @@ class UserInfoActivity : AbsBaseActivity() {
val documentId = DocumentsContract.getDocumentId(aUri) val documentId = DocumentsContract.getDocumentId(aUri)
if ("com.android.providers.media.documents" == aUri.authority) { if ("com.android.providers.media.documents" == aUri.authority) {
val id = documentId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1] val id = documentId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()[1]
val selection = MediaStore.Images.Media._ID + "=" + id val selection = Media._ID + "=" + id
imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection) imagePath = getImagePath(Media.EXTERNAL_CONTENT_URI, selection)
} else if ("com.android.providers.downloads.documents" == aUri.authority) { } else if ("com.android.providers.downloads.documents" == aUri.authority) {
val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
java.lang.Long.valueOf(documentId)) java.lang.Long.valueOf(documentId))
@ -233,50 +223,13 @@ class UserInfoActivity : AbsBaseActivity() {
val cursor = App.context.contentResolver.query(aUri, null, aSelection, null, null) val cursor = App.context.contentResolver.query(aUri, null, aSelection, null, null)
if (cursor != null) { if (cursor != null) {
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)) path = cursor.getString(cursor.getColumnIndex(Media.DATA))
} }
cursor.close() cursor.close()
} }
return path return path
} }
private fun performBannerCrop(picturePath: Uri?) {
val photoUri = FileProvider.getUriForFile(this, "$packageName.provider", File(getImagePathFromUri(picturePath)))
try {
val cropIntent = Intent("com.android.camera.action.CROP")
cropIntent.setDataAndType(photoUri, "image/*")
cropIntent.putExtra("crop", "true")
cropIntent.putExtra("aspectX", 1)
cropIntent.putExtra("aspectY", 1)
cropIntent.putExtra("return-data", true)
cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivityForResult(cropIntent, CROP_BANNER_REQUEST)
} catch (anfe: ActivityNotFoundException) {
val errorMessage = "your device doesn't support the crop action!"
Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show()
}
}
private fun performCrop(imageUri: Uri) {
val photoUri = FileProvider.getUriForFile(this, "$packageName.provider", File(getImagePathFromUri(imageUri)))
try {
val cropIntent = Intent("com.android.camera.action.CROP")
cropIntent.setDataAndType(photoUri, "image/*")
cropIntent.putExtra("crop", "true")
cropIntent.putExtra("aspectX", 1)
cropIntent.putExtra("aspectY", 1)
cropIntent.putExtra("outputX", 280)
cropIntent.putExtra("outputY", 280)
cropIntent.putExtra("return-data", true)
cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivityForResult(cropIntent, CROP_IMAGE_REQUEST)
} catch (anfe: ActivityNotFoundException) {
val errorMessage = "your device doesn't support the crop action!"
Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show()
}
}
private fun loadBannerFromStorage(profileImagePath: String) { private fun loadBannerFromStorage(profileImagePath: String) {
disposable.add(Compressor(this) disposable.add(Compressor(this)
.setQuality(100) .setQuality(100)
@ -323,9 +276,7 @@ class UserInfoActivity : AbsBaseActivity() {
companion object { companion object {
private const val PICK_IMAGE_REQUEST = 9002 private const val PICK_IMAGE_REQUEST = 9002
private const val CROP_IMAGE_REQUEST = 9003
private const val PICK_BANNER_REQUEST = 9004 private const val PICK_BANNER_REQUEST = 9004
private const val CROP_BANNER_REQUEST = 9005
private const val PROFILE_ICON_SIZE = 400 private const val PROFILE_ICON_SIZE = 400
} }
} }

View file

@ -133,6 +133,7 @@ public class WriteTagsAsyncTask extends
(Activity) context, toBeScanned) : null); (Activity) context, toBeScanned) : null);
} }
@NonNull
@Override @Override
protected Dialog createDialog(@NonNull Context context) { protected Dialog createDialog(@NonNull Context context) {
return new MaterialDialog(context, new BottomSheet()) return new MaterialDialog(context, new BottomSheet())

View file

@ -1,15 +1,16 @@
package code.name.monkey.retromusic.adapter package code.name.monkey.retromusic.adapter
import android.content.res.ColorStateList
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView
import androidx.annotation.IntDef import androidx.annotation.IntDef
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter
import code.name.monkey.retromusic.adapter.artist.ArtistAdapter import code.name.monkey.retromusic.adapter.artist.ArtistAdapter
@ -17,7 +18,7 @@ import code.name.monkey.retromusic.adapter.song.SongAdapter
import code.name.monkey.retromusic.loaders.PlaylistSongsLoader import code.name.monkey.retromusic.loaders.PlaylistSongsLoader
import code.name.monkey.retromusic.model.* import code.name.monkey.retromusic.model.*
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.views.IconImageView import com.google.android.material.chip.Chip
class HomeAdapter(private val activity: AppCompatActivity, private var homes: List<Home>, private val displayMetrics: DisplayMetrics) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { class HomeAdapter(private val activity: AppCompatActivity, private var homes: List<Home>, private val displayMetrics: DisplayMetrics) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
@ -91,8 +92,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
recyclerView.apply { recyclerView.apply {
adapter = AlbumFullWidthAdapter(activity, home.arrayList as ArrayList<Album>, displayMetrics) adapter = AlbumFullWidthAdapter(activity, home.arrayList as ArrayList<Album>, displayMetrics)
} }
title.text = activity.getString(home.title) chip.text = activity.getString(home.title)
icon.setImageResource(home.icon) chip.setChipIconResource(home.icon)
} }
} }
@ -103,8 +104,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
val artistAdapter = ArtistAdapter(activity, home.arrayList as ArrayList<Artist>, PreferenceUtil.getInstance().getHomeGridStyle(context!!), false, null) val artistAdapter = ArtistAdapter(activity, home.arrayList as ArrayList<Artist>, PreferenceUtil.getInstance().getHomeGridStyle(context!!), false, null)
adapter = artistAdapter adapter = artistAdapter
} }
title.text = activity.getString(home.title) chip.text = activity.getString(home.title)
icon.setImageResource(home.icon) chip.setChipIconResource(home.icon)
} }
} }
@ -116,8 +117,8 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
adapter = genreAdapter adapter = genreAdapter
} }
title.text = activity.getString(home.title) chip.text = activity.getString(home.title)
icon.setImageResource(home.icon) chip.setChipIconResource(home.icon)
} }
} }
@ -130,14 +131,17 @@ class HomeAdapter(private val activity: AppCompatActivity, private var homes: Li
adapter = songAdapter adapter = songAdapter
} }
title.text = activity.getString(home.title) chip.text = activity.getString(home.title)
icon.setImageResource(home.icon) chip.setChipIconResource(home.icon)
} }
} }
private open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) { private open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) {
val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView) val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView)
val title: TextView = itemView.findViewById(R.id.sectionTitle) val chip: Chip = itemView.findViewById(R.id.chipHead)
val icon: IconImageView = itemView.findViewById(R.id.sectionIcon)
init {
chip.apply { chipBackgroundColor = ColorStateList.valueOf(ThemeStore.primaryColor(context)) }
}
} }
} }

View file

@ -52,8 +52,7 @@ interface DeezerApiService {
.addHeader("Cache-Control", .addHeader("Cache-Control",
String.format( String.format(
Locale.getDefault(), Locale.getDefault(),
"max-age=%d, max-stale=%d", "max-age=31536000, max-stale=31536000"
31536000, 31536000
) )
).build() ).build()
chain.proceed(modifiedRequest) chain.proceed(modifiedRequest)

View file

@ -0,0 +1,21 @@
/*
* 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.extensions
import code.name.monkey.appthemehelper.util.ColorUtil
fun Int.ripAlpha(): Int {
return ColorUtil.stripAlpha(this)
}

View file

@ -12,6 +12,7 @@ import android.widget.SeekBar
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
@ -109,7 +110,6 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
} }
fun setTintable(color: Int) { fun setTintable(color: Int) {
ViewUtil.setProgressDrawable(volumeSeekBar, color, true) ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
} }
@ -121,15 +121,12 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
if (PreferenceUtil.getInstance().pauseOnZeroVolume()) if (PreferenceUtil.getInstance().pauseOnZeroVolume())
if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) { if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) {
MusicPlayerRemote.pauseSong() MusicPlayerRemote.pauseSong()
} else {
MusicPlayerRemote.resumePlaying()
} }
} }
fun setTintableColor(color: Int) { fun setTintableColor(color: Int) {
volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN) volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN)
volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN) volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN)
//TintHelper.setTintAuto(volumeSeekBar, color, false)
ViewUtil.setProgressDrawable(volumeSeekBar, color, true) ViewUtil.setProgressDrawable(volumeSeekBar, color, true)
} }

View file

@ -12,7 +12,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(), AlbumContract.AlbumView { open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager>(), AlbumContract.AlbumView {
private var presenter: AlbumPresenter? = null private lateinit var presenter: AlbumPresenter
override val emptyMessage: Int override val emptyMessage: Int
@ -48,7 +48,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
} }
override fun setSortOrder(sortOrder: String) { override fun setSortOrder(sortOrder: String) {
presenter!!.loadAlbums() presenter.loadAlbums()
} }
override fun loadSortOrder(): String { override fun loadSortOrder(): String {
@ -87,7 +87,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
} }
override fun onMediaStoreChanged() { override fun onMediaStoreChanged() {
presenter!!.loadAlbums() presenter.loadAlbums()
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -113,13 +113,13 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
libraryFragment.setTitle( libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.albums) if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.albums)
if (adapter!!.dataSet.isEmpty()) { if (adapter!!.dataSet.isEmpty()) {
presenter!!.subscribe() presenter.subscribe()
} }
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
presenter!!.unsubscribe() presenter.unsubscribe()
} }
override fun loading() {} override fun loading() {}
@ -136,7 +136,7 @@ open class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Al
companion object { companion object {
val TAG = AlbumsFragment::class.java.simpleName val TAG: String = AlbumsFragment::class.java.simpleName
fun newInstance(): AlbumsFragment { fun newInstance(): AlbumsFragment {
val args = Bundle() val args = Bundle()

View file

@ -12,7 +12,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil
import java.util.* import java.util.*
class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager>(), ArtistContract.ArtistView { class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager>(), ArtistContract.ArtistView {
private var presenter: ArtistPresenter? = null private lateinit var presenter: ArtistPresenter
override val emptyMessage: Int override val emptyMessage: Int
get() = R.string.no_artists get() = R.string.no_artists
@ -37,7 +37,7 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
} }
override fun onMediaStoreChanged() { override fun onMediaStoreChanged() {
presenter!!.loadArtists() presenter.loadArtists()
} }
override fun loadGridSize(): Int { override fun loadGridSize(): Int {
@ -83,7 +83,7 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
} }
override fun setSortOrder(sortOrder: String) { override fun setSortOrder(sortOrder: String) {
presenter!!.loadArtists() presenter.loadArtists()
} }
@ -103,13 +103,13 @@ class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<Artist
libraryFragment.setTitle( libraryFragment.setTitle(
if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.artists) if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.artists)
if (adapter!!.dataSet.isEmpty()) { if (adapter!!.dataSet.isEmpty()) {
presenter!!.subscribe() presenter.subscribe()
} }
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
presenter!!.unsubscribe() presenter.unsubscribe()
} }
override fun loading() {} override fun loading() {}

View file

@ -16,7 +16,7 @@ import java.util.*
class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager>(), PlaylistContract.PlaylistView { class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager>(), PlaylistContract.PlaylistView {
private var presenter: PlaylistPresenter? = null private lateinit var presenter: PlaylistPresenter
override val emptyMessage: Int override val emptyMessage: Int
get() = R.string.no_playlists get() = R.string.no_playlists
@ -47,18 +47,18 @@ class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, L
super.onResume() super.onResume()
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists) libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.playlists)
if (adapter!!.dataSet.isEmpty()) { if (adapter!!.dataSet.isEmpty()) {
presenter!!.subscribe() presenter.subscribe()
} }
} }
override fun onDestroy() { override fun onDestroy() {
presenter!!.unsubscribe() presenter.unsubscribe()
super.onDestroy() super.onDestroy()
} }
override fun onMediaStoreChanged() { override fun onMediaStoreChanged() {
super.onMediaStoreChanged() super.onMediaStoreChanged()
presenter!!.loadPlaylists() presenter.loadPlaylists()
} }
override fun loading() { override fun loading() {

View file

@ -83,7 +83,7 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdap
super.onResume() super.onResume()
libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.songs) libraryFragment.setTitle(if (PreferenceUtil.getInstance().tabTitles()) R.string.library else R.string.songs)
if (adapter!!.dataSet.isEmpty()) { if (adapter!!.dataSet.isEmpty()) {
presenter!!.subscribe() presenter.subscribe()
} }
} }
@ -128,7 +128,7 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdap
} }
override fun setSortOrder(sortOrder: String) { override fun setSortOrder(sortOrder: String) {
presenter!!.loadSongs() presenter.loadSongs()
} }
companion object { companion object {

View file

@ -17,6 +17,7 @@ import code.name.monkey.retromusic.Constants
import code.name.monkey.retromusic.Constants.USER_BANNER import code.name.monkey.retromusic.Constants.USER_BANNER
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.HomeAdapter import code.name.monkey.retromusic.adapter.HomeAdapter
import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
@ -32,7 +33,7 @@ import code.name.monkey.retromusic.mvp.presenter.HomePresenter
import code.name.monkey.retromusic.util.* import code.name.monkey.retromusic.util.*
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.abs_playlists.* import kotlinx.android.synthetic.main.abs_playlists.*
import kotlinx.android.synthetic.main.fragment_banner_home.* import kotlinx.android.synthetic.main.fragment_banner_home.*
@ -42,12 +43,8 @@ import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView { class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView {
override fun showEmpty() {
emptyContainer.show()
emptyText.setText(R.string.start_play_music)
}
private var disposable: Disposable? = null private var disposable: CompositeDisposable = CompositeDisposable()
private lateinit var homePresenter: HomePresenter private lateinit var homePresenter: HomePresenter
private lateinit var toolbar: Toolbar private lateinit var toolbar: Toolbar
@ -56,10 +53,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
} }
private fun loadImageFromStorage() { private fun loadImageFromStorage() {
if (disposable != null) { disposable.add(Compressor(context!!)
disposable?.dispose()
}
disposable = Compressor(context!!)
.setMaxHeight(300) .setMaxHeight(300)
.setMaxWidth(300) .setMaxWidth(300)
.setQuality(75) .setQuality(75)
@ -75,7 +69,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
} }
}) { }) {
userImage.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat)) userImage.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
} })
} }
private val displayMetrics: DisplayMetrics private val displayMetrics: DisplayMetrics
@ -176,7 +170,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
disposable?.dispose() disposable.dispose()
homePresenter.unsubscribe() homePresenter.unsubscribe()
} }
@ -185,7 +179,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
} }
override fun showEmptyView() { override fun showEmptyView() {
emptyContainer.show()
} }
override fun completed() { override fun completed() {
@ -211,6 +205,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
layoutManager = LinearLayoutManager(mainActivity) layoutManager = LinearLayoutManager(mainActivity)
adapter = homeAdapter adapter = homeAdapter
} }
if (list.isEmpty()) {
showEmptyView()
} else {
emptyContainer.hide()
}
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
@ -262,13 +261,13 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
.diskCacheStrategy(DiskCacheStrategy.ALL) .diskCacheStrategy(DiskCacheStrategy.ALL)
.into(bannerImage!!) .into(bannerImage!!)
} else { } else {
disposable = Compressor(context!!) disposable.add(Compressor(context!!)
.setQuality(100) .setQuality(100)
.setCompressFormat(Bitmap.CompressFormat.WEBP) .setCompressFormat(Bitmap.CompressFormat.WEBP)
.compressToBitmapAsFlowable(File(PreferenceUtil.getInstance().bannerImage, USER_BANNER)) .compressToBitmapAsFlowable(File(PreferenceUtil.getInstance().bannerImage, USER_BANNER))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { bannerImage?.setImageBitmap(it) } .subscribe { bitmap -> bannerImage.setImageBitmap(bitmap) })
} }
} }
loadImageFromStorage() loadImageFromStorage()

View file

@ -14,6 +14,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -100,7 +101,7 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false) TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
TintHelper.setTintAuto(playPauseButton, colorFinal, true) TintHelper.setTintAuto(playPauseButton, colorFinal, true)

View file

@ -14,6 +14,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -127,7 +128,7 @@ class CardPlaybackControlsFragment : AbsPlayerControlsFragment() {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN) image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN)
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false) TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)

View file

@ -16,16 +16,16 @@ import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
import code.name.monkey.retromusic.dialogs.SongShareDialog import code.name.monkey.retromusic.dialogs.SongShareDialog
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.menu.SongMenuHelper import code.name.monkey.retromusic.helper.menu.SongMenuHelper
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.model.lyrics.Lyrics import code.name.monkey.retromusic.model.lyrics.Lyrics
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.ViewUtil
@ -151,8 +151,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Call
private fun setUpPlayerToolbar() { private fun setUpPlayerToolbar() {
playerToolbar.apply { playerToolbar.apply {
inflateMenu(code.name.monkey.retromusic.R.menu.menu_player) inflateMenu(R.menu.menu_player)
setNavigationIcon(code.name.monkey.retromusic.R.drawable.ic_close_white_24dp)
setNavigationOnClickListener { activity!!.onBackPressed() } setNavigationOnClickListener { activity!!.onBackPressed() }
setOnMenuItemClickListener(this@ClassicPlayerFragment) setOnMenuItemClickListener(this@ClassicPlayerFragment)
} }

View file

@ -15,14 +15,14 @@ import android.widget.SeekBar
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import kotlinx.android.synthetic.main.fragment_player_playback_controls.* import kotlinx.android.synthetic.main.fragment_color_player_playback_controls.*
import kotlinx.android.synthetic.main.media_button.* import kotlinx.android.synthetic.main.media_button.*
class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
@ -99,7 +99,7 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
title!!.setTextColor(lastPlaybackControlsColor) title!!.setTextColor(lastPlaybackControlsColor)
text!!.setTextColor(lastDisabledPlaybackControlsColor) text!!.setTextColor(lastDisabledPlaybackControlsColor)
setProgressBarColor(lastPlaybackControlsColor, lastDisabledPlaybackControlsColor) TintHelper.setTintAuto(progressSlider, lastPlaybackControlsColor, false)
volumeFragment?.setTintableColor(lastPlaybackControlsColor) volumeFragment?.setTintableColor(lastPlaybackControlsColor)
@ -111,17 +111,6 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() {
updatePrevNextColor() updatePrevNextColor()
} }
private fun setProgressBarColor(c1: Int, c2: Int) {
progressSlider.thumbTintList = ColorStateList.valueOf(c1)
val ld = progressSlider.progressDrawable as LayerDrawable
val clipDrawableProgress = ld.findDrawableByLayerId(android.R.id.progress)
clipDrawableProgress.setColorFilter(c1, PorterDuff.Mode.SRC_IN)
val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background)
clipDrawableBackground.setColorFilter(c2, PorterDuff.Mode.SRC_IN)
}
private fun setUpPlayPauseFab() { private fun setUpPlayPauseFab() {
TintHelper.setTintAuto(playPauseButton, Color.WHITE, true) TintHelper.setTintAuto(playPauseButton, Color.WHITE, true)
TintHelper.setTintAuto(playPauseButton, Color.BLACK, false) TintHelper.setTintAuto(playPauseButton, Color.BLACK, false)

View file

@ -16,6 +16,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -113,7 +114,7 @@ class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
volumeFragment?.setTintable(colorFinal) volumeFragment?.setTintable(colorFinal)

View file

@ -15,6 +15,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
@ -102,7 +103,7 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
updateTextColors(colorFinal) updateTextColors(colorFinal)

View file

@ -21,6 +21,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -111,7 +112,7 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), PopupMenu.OnMe
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
volumeFragment?.setTintableColor(colorFinal) volumeFragment?.setTintableColor(colorFinal)
text.setTextColor(colorFinal) text.setTextColor(colorFinal)

View file

@ -12,6 +12,8 @@ import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.hide
import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
@ -21,8 +23,6 @@ import code.name.monkey.retromusic.loaders.ArtistLoader
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics
import code.name.monkey.retromusic.model.lyrics.Lyrics import code.name.monkey.retromusic.model.lyrics.Lyrics
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.NavigationUtil
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -83,7 +83,7 @@ class FullPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbac
} }
private fun hideLyricsLayout() { private fun hideLyricsLayout() {
lyricsLayout.animate().alpha(0f).setDuration( VISIBILITY_ANIM_DURATION).withEndAction(Runnable { lyricsLayout.animate().alpha(0f).setDuration(VISIBILITY_ANIM_DURATION).withEndAction(Runnable {
if (!isLyricsLayoutBound()) return@Runnable if (!isLyricsLayoutBound()) return@Runnable
lyricsLayout.visibility = View.GONE lyricsLayout.visibility = View.GONE
lyricsLine1.text = null lyricsLine1.text = null
@ -119,7 +119,6 @@ class FullPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbac
private fun setUpPlayerToolbar() { private fun setUpPlayerToolbar() {
playerToolbar.apply { playerToolbar.apply {
setNavigationIcon(R.drawable.ic_close_white_24dp)
setNavigationOnClickListener { activity!!.onBackPressed() } setNavigationOnClickListener { activity!!.onBackPressed() }
} }
} }

View file

@ -29,6 +29,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -123,7 +124,7 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.textColorSecondary(context!!) ThemeStore.textColorSecondary(context!!).ripAlpha()
} }
volumeFragment?.setTintable(colorFinal) volumeFragment?.setTintable(colorFinal)
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true) ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)

View file

@ -13,6 +13,7 @@ import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -106,7 +107,7 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() {
lastPlaybackControlsColor = color lastPlaybackControlsColor = color
color color
} else { } else {
ThemeStore.textColorSecondary(context!!) ThemeStore.textColorSecondary(context!!).ripAlpha()
} }
text.setTextColor(colorFinal) text.setTextColor(colorFinal)
ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true) ViewUtil.setProgressDrawable(progressSlider, ColorUtil.stripAlpha(colorFinal), true)

View file

@ -101,7 +101,6 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setUpSubFragments() setUpSubFragments()
setUpPlayerToolbar() setUpPlayerToolbar()
snowfall.visibility = if (PreferenceUtil.getInstance().isSnowFall) View.VISIBLE else View.GONE
//val display = activity?.windowManager?.defaultDisplay //val display = activity?.windowManager?.defaultDisplay

View file

@ -15,6 +15,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
@ -71,10 +72,9 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() {
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) { val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
color color
} else { } else {
ThemeStore.accentColor(context!!) ThemeStore.accentColor(context!!).ripAlpha()
} }
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false) TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false)
TintHelper.setTintAuto(playPauseButton, colorFinal, true) TintHelper.setTintAuto(playPauseButton, colorFinal, true)
ViewUtil.setProgressDrawable(progressSlider, colorFinal) ViewUtil.setProgressDrawable(progressSlider, colorFinal)

View file

@ -33,18 +33,12 @@ import code.name.monkey.retromusic.util.NavigationUtil
*/ */
abstract class AbsSettingsFragment : PreferenceFragmentCompat() { abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
internal fun showProToastAndNavigate(message: String) { internal fun showProToastAndNavigate(message: String) {
Toast.makeText(context, "$message is Pro version feature.", Toast.LENGTH_SHORT).show() Toast.makeText(context, "$message is Pro version feature.", Toast.LENGTH_SHORT).show()
NavigationUtil.goToProVersion(activity!!) NavigationUtil.goToProVersion(activity!!)
} }
protected fun setSummary(preference: Preference) {
setSummary(preference, PreferenceManager
.getDefaultSharedPreferences(preference.context)
.getString(preference.key, "")!!)
}
internal fun setSummary(preference: Preference, value: Any) { internal fun setSummary(preference: Preference, value: Any) {
val stringValue = value.toString() val stringValue = value.toString()
if (preference is ListPreference) { if (preference is ListPreference) {
@ -57,6 +51,12 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
abstract fun invalidateSettings() abstract fun invalidateSettings()
protected fun setSummary(preference: Preference) {
setSummary(preference, PreferenceManager
.getDefaultSharedPreferences(preference.context)
.getString(preference.key, "")!!)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setDivider(ColorDrawable(Color.TRANSPARENT)) setDivider(ColorDrawable(Color.TRANSPARENT))
@ -68,19 +68,18 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
} }
override fun onDisplayPreferenceDialog(preference: Preference) { override fun onDisplayPreferenceDialog(preference: Preference) {
var dialogFragment: DialogFragment? = null var dialogFragment: DialogFragment? = null// Dialog creation could not be handled here. Try with the super method.
if (preference is NowPlayingScreenPreference) { // The dialog was created (it was one of our custom Preferences), show the dialog for it
dialogFragment = NowPlayingScreenPreferenceDialog.newInstance(preference.key); when (preference) {
} else if (preference is AlbumCoverStylePreference) { is NowPlayingScreenPreference -> dialogFragment = NowPlayingScreenPreferenceDialog.newInstance(preference.key)
dialogFragment = AlbumCoverStylePreferenceDialog.newInstance(preference.key); is AlbumCoverStylePreference -> dialogFragment = AlbumCoverStylePreferenceDialog.newInstance(preference.key)
} is MaterialListPreference -> {
if (preference is MaterialListPreference) {
preference.entries preference.entries
dialogFragment = MaterialListPreferenceDialog.newInstance(preference) dialogFragment = MaterialListPreferenceDialog.newInstance(preference)
} }
if (preference is BlacklistPreference) { is BlacklistPreference -> dialogFragment = BlacklistPreferenceDialog.newInstance(preference.key)
dialogFragment = BlacklistPreferenceDialog.newInstance(preference.key)
} }
if (dialogFragment != null) { if (dialogFragment != null) {
// The dialog was created (it was one of our custom Preferences), show the dialog for it // The dialog was created (it was one of our custom Preferences), show the dialog for it
dialogFragment.setTargetFragment(this, 0); dialogFragment.setTargetFragment(this, 0);
@ -89,6 +88,5 @@ abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
// Dialog creation could not be handled here. Try with the super method. // Dialog creation could not be handled here. Try with the super method.
super.onDisplayPreferenceDialog(preference); super.onDisplayPreferenceDialog(preference);
} }
} }
} }

View file

@ -14,40 +14,50 @@
package code.name.monkey.retromusic.fragments.settings package code.name.monkey.retromusic.fragments.settings
import android.os.Build import android.os.Build.VERSION
import android.os.Build.VERSION_CODES
import android.os.Bundle import android.os.Bundle
import androidx.preference.TwoStatePreference import androidx.preference.TwoStatePreference
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
/** /**
* @author Hemanth S (h4h13). * @author Hemanth S (h4h13).
*/ */
class NotificationSettingsFragment : AbsSettingsFragment() { class NotificationSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() { override fun invalidateSettings() {
val classicNotification: TwoStatePreference = findPreference("classic_notification")!!
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { val classicNotification: TwoStatePreference? = findPreference("classic_notification")
classicNotification.isVisible = false if (VERSION.SDK_INT < VERSION_CODES.N) {
classicNotification?.isVisible = false
} else { } else {
classicNotification.isChecked = PreferenceUtil.getInstance().classicNotification() classicNotification?.apply {
classicNotification.setOnPreferenceChangeListener { _, newValue -> isChecked = PreferenceUtil.getInstance().classicNotification()
setOnPreferenceChangeListener { _, newValue ->
// Save preference // Save preference
PreferenceUtil.getInstance().setClassicNotification(newValue as Boolean) PreferenceUtil.getInstance().setClassicNotification(newValue as Boolean)
invalidateSettings()
val service = MusicPlayerRemote.musicService
if (service != null) {
service.initNotification()
service.updateNotification()
}
true true
} }
} }
} }
val coloredNotification: TwoStatePreference? = findPreference("colored_notification")
if (VERSION.SDK_INT >= VERSION_CODES.O) {
coloredNotification?.isEnabled = PreferenceUtil.getInstance().classicNotification()
} else {
coloredNotification?.apply {
isChecked = PreferenceUtil.getInstance().coloredNotification()
setOnPreferenceChangeListener { _, newValue ->
PreferenceUtil.getInstance().setColoredNotification(newValue as Boolean)
true
}
}
}
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.pref_notification) addPreferencesFromResource(code.name.monkey.retromusic.R.xml.pref_notification)
} }
} }

View file

@ -23,7 +23,6 @@ import androidx.preference.Preference
import androidx.preference.TwoStatePreference import androidx.preference.TwoStatePreference
import code.name.monkey.appthemehelper.* import code.name.monkey.appthemehelper.*
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.App import code.name.monkey.retromusic.App
@ -42,15 +41,20 @@ import com.afollestad.materialdialogs.color.colorChooser
class ThemeSettingsFragment : AbsSettingsFragment() { class ThemeSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() { override fun invalidateSettings() {
val primaryColorPref: ATEColorPreference = findPreference("primary_color")!! val primaryColorPref: ATEColorPreference? = findPreference("primary_color")
primaryColorPref.isVisible = PreferenceUtil.getInstance().generalTheme == R.style.Theme_RetroMusic_Color primaryColorPref?.let {
it.isVisible = PreferenceUtil.getInstance().generalTheme == R.style.Theme_RetroMusic_Color
val primaryColor = ThemeStore.primaryColor(activity!!) val primaryColor = ThemeStore.primaryColor(activity!!)
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor)) it.setColor(primaryColor, ColorUtil.darkenColor(primaryColor))
primaryColorPref.setOnPreferenceClickListener { it.setOnPreferenceClickListener {
MaterialDialog(activity!!, BottomSheet()).show { MaterialDialog(activity!!, BottomSheet()).show {
title(code.name.monkey.retromusic.R.string.primary_color) title(R.string.primary_color)
positiveButton(R.string.set) positiveButton(R.string.set)
colorChooser(initialSelection = BLUE, allowCustomArgb = true, colors = PRIMARY_COLORS, subColors = PRIMARY_COLORS_SUB) { _, color -> colorChooser(initialSelection = BLUE,
allowCustomArgb = true,
colors = PRIMARY_COLORS,
subColors = PRIMARY_COLORS_SUB) { _, color ->
val theme = if (ColorUtil.isColorLight(color)) val theme = if (ColorUtil.isColorLight(color))
PreferenceUtil.getThemeResFromPrefValue("light") PreferenceUtil.getThemeResFromPrefValue("light")
else else
@ -65,31 +69,30 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
} }
true true
} }
}
val generalTheme: Preference = findPreference("general_theme")!! val generalTheme: Preference? = findPreference("general_theme")
setSummary(generalTheme)
generalTheme.setOnPreferenceChangeListener { _, newValue -> generalTheme?.let {
setSummary(it)
it.setOnPreferenceChangeListener { _, newValue ->
val theme = newValue as String val theme = newValue as String
println(newValue)
if (theme == "color" && !App.isProVersion) { if (theme == "color" && !App.isProVersion) {
primaryColorPref.isVisible = false
showProToastAndNavigate("Color theme") showProToastAndNavigate("Color theme")
return@setOnPreferenceChangeListener false return@setOnPreferenceChangeListener false
} else { }
primaryColorPref.isVisible = true
if (theme == "color") {
primaryColorPref?.isVisible = true
} }
setSummary(generalTheme, newValue) setSummary(generalTheme, newValue)
when (theme) { when (theme) {
"light" -> ThemeStore.editTheme(context!!).primaryColor(Color.WHITE).commit() "light" -> ThemeStore.editTheme(context!!).primaryColor(Color.WHITE).commit()
"black" -> ThemeStore.editTheme(context!!).primaryColor(Color.BLACK).commit() "black" -> ThemeStore.editTheme(context!!).primaryColor(Color.BLACK).commit()
"dark" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_grey_900)).commit() "dark" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_grey_900)).commit()
"daynight" -> {
val color = ATHUtil.resolveColor(context!!, android.R.attr.colorPrimary)
ThemeStore.editTheme(context!!).primaryColor(color).commit()
}
"color" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_blue_grey_800)).commit() "color" -> ThemeStore.editTheme(context!!).primaryColor(ContextCompat.getColor(context!!, R.color.md_blue_grey_800)).commit()
} }
@ -98,13 +101,13 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
.commit() .commit()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
activity!!.setTheme(PreferenceUtil.getThemeResFromPrefValue(theme)) activity?.setTheme(PreferenceUtil.getThemeResFromPrefValue(theme))
DynamicShortcutManager(activity!!).updateDynamicShortcuts() DynamicShortcutManager(activity!!).updateDynamicShortcuts()
} }
activity!!.recreate() activity?.recreate()
//invalidateSettings();
true true
} }
}
val accentColorPref: ATEColorPreference = findPreference("accent_color")!! val accentColorPref: ATEColorPreference = findPreference("accent_color")!!
val accentColor = ThemeStore.accentColor(activity!!) val accentColor = ThemeStore.accentColor(activity!!)

View file

@ -17,9 +17,10 @@ package code.name.monkey.retromusic.model;
import android.content.Context; import android.content.Context;
import android.os.Parcel; import android.os.Parcel;
import androidx.annotation.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
import androidx.annotation.NonNull;
import io.reactivex.Observable; import io.reactivex.Observable;
/** /**

View file

@ -20,12 +20,9 @@ import code.name.monkey.retromusic.mvp.BaseView
interface HomeContract { interface HomeContract {
interface HomeView : BaseView<ArrayList<Home>> { interface HomeView : BaseView<ArrayList<Home>>
fun showEmpty()
}
interface HomePresenter : BasePresenter<HomeView> { interface HomePresenter : BasePresenter<HomeView> {
fun homeSections()
fun homeSections();
} }
} }

View file

@ -59,7 +59,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(0, R.string.recent_artists, 0, it, RECENT_ARTISTS, R.drawable.ic_artist_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(0, R.string.recent_artists, 0, it, RECENT_ARTISTS, R.drawable.ic_artist_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
@ -69,7 +69,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(1, R.string.recent_albums, 0, it, RECENT_ALBUMS, R.drawable.ic_album_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(1, R.string.recent_albums, 0, it, RECENT_ALBUMS, R.drawable.ic_album_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
@ -79,7 +79,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(3, R.string.top_albums, 0, it, TOP_ALBUMS, R.drawable.ic_album_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(3, R.string.top_albums, 0, it, TOP_ALBUMS, R.drawable.ic_album_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
@ -89,7 +89,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(2, R.string.top_artists, 0, it, TOP_ARTISTS, R.drawable.ic_artist_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(2, R.string.top_artists, 0, it, TOP_ARTISTS, R.drawable.ic_artist_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
@ -99,7 +99,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(4, R.string.favorites, 0, it, PLAYLISTS, R.drawable.ic_favorite_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(4, R.string.favorites, 0, it, PLAYLISTS, R.drawable.ic_favorite_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
@ -109,7 +109,7 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
if (it.isNotEmpty()) hashSet.add(Home(6, R.string.genres, 0, it, GENRES, R.drawable.ic_guitar_acoustic_white_24dp)) if (it.isNotEmpty()) hashSet.add(Home(6, R.string.genres, 0, it, GENRES, R.drawable.ic_guitar_acoustic_white_24dp))
view.showData(ArrayList(hashSet)) view.showData(ArrayList(hashSet))
}, { }, {
view.showEmpty() view.showEmptyView()
}) })
} }
} }

View file

@ -16,6 +16,7 @@ package code.name.monkey.retromusic.preferences
import android.app.Dialog import android.app.Dialog
import android.content.Context import android.content.Context
import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
@ -28,6 +29,7 @@ import androidx.preference.DialogPreference
import androidx.preference.PreferenceDialogFragmentCompat import androidx.preference.PreferenceDialogFragmentCompat
import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.App import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.NowPlayingScreen
@ -35,7 +37,6 @@ import code.name.monkey.retromusic.util.NavigationUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.ViewUtil
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.customview.customView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
@ -54,6 +55,10 @@ class NowPlayingScreenPreference : DialogPreference {
override fun getDialogLayoutResource(): Int { override fun getDialogLayoutResource(): Int {
return mLayoutRes; return mLayoutRes;
} }
init {
icon?.setColorFilter(ThemeStore.textColorSecondary(context), PorterDuff.Mode.SRC_IN)
}
} }
class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewPager.OnPageChangeListener { class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewPager.OnPageChangeListener {

View file

@ -51,11 +51,11 @@ class MediaButtonIntentReceiver : BroadcastReceiver() {
} }
companion object { companion object {
val TAG = MediaButtonIntentReceiver::class.java.simpleName val TAG: String = MediaButtonIntentReceiver::class.java.simpleName
private val DEBUG = BuildConfig.DEBUG private val DEBUG = BuildConfig.DEBUG
private val MSG_HEADSET_DOUBLE_CLICK_TIMEOUT = 2 private const val MSG_HEADSET_DOUBLE_CLICK_TIMEOUT = 2
private val DOUBLE_CLICK = 400 private const val DOUBLE_CLICK = 400
private var wakeLock: WakeLock? = null private var wakeLock: WakeLock? = null
private var mClickCounter = 0 private var mClickCounter = 0

View file

@ -29,7 +29,6 @@ import android.graphics.Point;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect;
import android.media.session.MediaSession;
import android.os.Binder; import android.os.Binder;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
@ -86,6 +85,7 @@ import code.name.monkey.retromusic.service.playback.Playback;
import code.name.monkey.retromusic.util.MusicUtil; import code.name.monkey.retromusic.util.MusicUtil;
import code.name.monkey.retromusic.util.PreferenceUtil; import code.name.monkey.retromusic.util.PreferenceUtil;
import code.name.monkey.retromusic.util.RetroUtil; import code.name.monkey.retromusic.util.RetroUtil;
import io.reactivex.schedulers.Schedulers;
import static code.name.monkey.retromusic.Constants.ACTION_PAUSE; import static code.name.monkey.retromusic.Constants.ACTION_PAUSE;
import static code.name.monkey.retromusic.Constants.ACTION_PENDING_QUIT; import static code.name.monkey.retromusic.Constants.ACTION_PENDING_QUIT;
@ -142,6 +142,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
| PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_STOP
| PlaybackStateCompat.ACTION_SEEK_TO; | PlaybackStateCompat.ACTION_SEEK_TO;
private final IBinder musicBind = new MusicBinder(); private final IBinder musicBind = new MusicBinder();
public boolean pendingQuit = false;
private AppWidgetBig appWidgetBig = AppWidgetBig.Companion.getInstance(); private AppWidgetBig appWidgetBig = AppWidgetBig.Companion.getInstance();
private AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance(); private AppWidgetClassic appWidgetClassic = AppWidgetClassic.Companion.getInstance();
private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance(); private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance();
@ -178,7 +179,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
}; };
public boolean pendingQuit = false;
private Playback playback; private Playback playback;
private ArrayList<Song> playingQueue = new ArrayList<>(); private ArrayList<Song> playingQueue = new ArrayList<>();
private ArrayList<Song> originalPlayingQueue = new ArrayList<>(); private ArrayList<Song> originalPlayingQueue = new ArrayList<>();
@ -244,8 +244,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); String action = intent.getAction();
if (action != null) { if (action != null) {
switch (action) { if (Intent.ACTION_HEADSET_PLUG.equals(action)) {
case Intent.ACTION_HEADSET_PLUG:
int state = intent.getIntExtra("state", -1); int state = intent.getIntExtra("state", -1);
switch (state) { switch (state) {
case 0: case 0:
@ -257,7 +256,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
play(); play();
break; break;
} }
break;
} }
} }
} }
@ -352,7 +350,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0); PendingIntent mediaButtonReceiverPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
mediaSession = new MediaSessionCompat(this, "RetroMusicPlayer", mediaButtonReceiverComponentName, mediaButtonReceiverPendingIntent); mediaSession = new MediaSessionCompat(this,
"RetroMusicPlayer",
mediaButtonReceiverComponentName,
mediaButtonReceiverPendingIntent);
mediaSession.setCallback(new MediaSessionCompat.Callback() { mediaSession.setCallback(new MediaSessionCompat.Callback() {
@Override @Override
public void onPlay() { public void onPlay() {
@ -390,8 +391,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
}); });
mediaSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS
| MediaSession.FLAG_HANDLES_MEDIA_BUTTONS); | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS
);
mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent); mediaSession.setMediaButtonReceiver(mediaButtonReceiverPendingIntent);
} }
@ -417,31 +419,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
play(); play();
break; break;
case ACTION_PLAY_PLAYLIST: case ACTION_PLAY_PLAYLIST:
Playlist playlist = intent.getParcelableExtra(INTENT_EXTRA_PLAYLIST); playFromPlaylist(intent);
int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode());
if (playlist != null) {
ArrayList<Song> playlistSongs;
if (playlist instanceof AbsCustomPlaylist) {
playlistSongs = ((AbsCustomPlaylist) playlist).getSongs(getApplicationContext()).blockingFirst();
} else {
//noinspection unchecked
playlistSongs = PlaylistSongsLoader.INSTANCE.getPlaylistSongList(getApplicationContext(), playlist.id).blockingFirst();
}
if (!playlistSongs.isEmpty()) {
if (shuffleMode == SHUFFLE_MODE_SHUFFLE) {
int startPosition;
startPosition = new Random().nextInt(playlistSongs.size());
openQueue(playlistSongs, startPosition, true);
setShuffleMode(shuffleMode);
} else {
openQueue(playlistSongs, 0, true);
}
} else {
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
}
break; break;
case ACTION_REWIND: case ACTION_REWIND:
back(true); back(true);
@ -464,6 +442,45 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
return START_STICKY; return START_STICKY;
} }
private void playFromPlaylist(Intent intent) {
Playlist playlist = intent.getParcelableExtra(INTENT_EXTRA_PLAYLIST);
int shuffleMode = intent.getIntExtra(INTENT_EXTRA_SHUFFLE_MODE, getShuffleMode());
if (playlist != null) {
if (playlist instanceof AbsCustomPlaylist) {
((AbsCustomPlaylist) playlist).getSongs(getApplicationContext())
.subscribeOn(Schedulers.io())
.subscribe(songs -> {
playSongs(shuffleMode, songs);
}, throwable -> {
});
} else {
PlaylistSongsLoader.INSTANCE.getPlaylistSongList(getApplicationContext(), playlist.id)
.subscribeOn(Schedulers.io())
.subscribe(songs -> {
playSongs(shuffleMode, songs);
}, throwable -> {
});
}
} else {
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
}
}
private void playSongs(int shuffleMode, ArrayList<Song> playlistSongs) {
if (!playlistSongs.isEmpty()) {
if (shuffleMode == SHUFFLE_MODE_SHUFFLE) {
int startPosition;
startPosition = new Random().nextInt(playlistSongs.size());
openQueue(playlistSongs, startPosition, true);
setShuffleMode(shuffleMode);
} else {
openQueue(playlistSongs, 0, true);
}
} else {
Toast.makeText(getApplicationContext(), R.string.playlist_is_empty, Toast.LENGTH_LONG).show();
}
}
@Override @Override
public void onDestroy() { public void onDestroy() {

View file

@ -33,13 +33,13 @@ import code.name.monkey.retromusic.Constants.ACTION_REWIND
import code.name.monkey.retromusic.Constants.ACTION_SKIP import code.name.monkey.retromusic.Constants.ACTION_SKIP
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget.Companion.createBitmap import code.name.monkey.retromusic.appwidgets.base.BaseAppWidget.Companion.createBitmap
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroSimpleTarget import code.name.monkey.retromusic.glide.RetroSimpleTarget
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroColorUtil import code.name.monkey.retromusic.util.RetroColorUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
@ -89,8 +89,7 @@ class PlayingNotificationImpl : PlayingNotification() {
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT) .getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null) val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
val notification = NotificationCompat.Builder(service, val notification = NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID)
PlayingNotification.NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
.setContentIntent(clickIntent) .setContentIntent(clickIntent)
.setDeleteIntent(deleteIntent) .setDeleteIntent(deleteIntent)

View file

@ -30,13 +30,13 @@ import code.name.monkey.retromusic.Constants.ACTION_REWIND
import code.name.monkey.retromusic.Constants.ACTION_SKIP import code.name.monkey.retromusic.Constants.ACTION_SKIP
import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE import code.name.monkey.retromusic.Constants.ACTION_TOGGLE_PAUSE
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroSimpleTarget import code.name.monkey.retromusic.glide.RetroSimpleTarget
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.RetroUtil.createBitmap import code.name.monkey.retromusic.util.RetroUtil.createBitmap
@ -87,8 +87,7 @@ class PlayingNotificationOreo : PlayingNotification() {
.getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT) .getActivity(service, 0, action, PendingIntent.FLAG_UPDATE_CURRENT)
val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null) val deleteIntent = buildPendingIntent(service, ACTION_QUIT, null)
val builder = NotificationCompat.Builder(service, val builder = NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID)
PlayingNotification.NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
.setContentIntent(clickIntent) .setContentIntent(clickIntent)
.setDeleteIntent(deleteIntent) .setDeleteIntent(deleteIntent)

View file

@ -220,7 +220,8 @@ public class ImageUtil {
return inSampleSize; return inSampleSize;
} }
public static Bitmap getResizedBitmap(Bitmap image, int maxSize) { @NonNull
public static Bitmap getResizedBitmap(@NonNull Bitmap image, int maxSize) {
int width = image.getWidth(); int width = image.getWidth();
int height = image.getHeight(); int height = image.getHeight();

View file

@ -147,8 +147,6 @@ public final class PreferenceUtil {
return R.style.Theme_RetroMusic_Light; return R.style.Theme_RetroMusic_Light;
case "color": case "color":
return R.style.Theme_RetroMusic_Color; return R.style.Theme_RetroMusic_Color;
case "acolor":
return R.style.Theme_RetroMusic_Black;
case "black": case "black":
return R.style.Theme_RetroMusic_Black; return R.style.Theme_RetroMusic_Black;
case "daynight": case "daynight":
@ -306,6 +304,10 @@ public final class PreferenceUtil {
return mPreferences.getBoolean(COLORED_NOTIFICATION, true); return mPreferences.getBoolean(COLORED_NOTIFICATION, true);
} }
public final void setColoredNotification(boolean b) {
mPreferences.edit().putBoolean(COLORED_NOTIFICATION, b).apply();
}
public final boolean classicNotification() { public final boolean classicNotification() {
return mPreferences.getBoolean(CLASSIC_NOTIFICATION, false); return mPreferences.getBoolean(CLASSIC_NOTIFICATION, false);
} }

View file

@ -37,7 +37,7 @@ import code.name.monkey.retromusic.R;
public class RetroColorUtil { public class RetroColorUtil {
public static int toolbarColor(@NonNull Context context) { public static int toolbarColor(@NonNull Context context) {
int color = ThemeStore.Companion.primaryColor(context); int color = ThemeStore.Companion.primaryColor(context);
if (ATHUtil.INSTANCE.isWindowBackgroundDark(context)) { if (ATHUtil.INSTANCE.isWindowBackgroundDark(context) && PreferenceUtil.getInstance().getGeneralTheme() != R.style.Theme_RetroMusic_Color) {
return ATHUtil.INSTANCE.resolveColor(context, R.attr.cardBackgroundColor); return ATHUtil.INSTANCE.resolveColor(context, R.attr.cardBackgroundColor);
} else { } else {
return color; return color;

View file

@ -0,0 +1,36 @@
/*
* 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.views
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.retromusic.R
import com.google.android.material.chip.Chip
class RetroChip @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
Chip(context, attrs, defStyleAttr) {
init {
chipBackgroundColor = ColorStateList.valueOf(ThemeStore.primaryColor(context))
val iconColor = ATHUtil.resolveColor(context, R.attr.iconColor)
val dividerColor = ATHUtil.resolveColor(context, R.attr.dividerColor)
chipIcon?.setTintList(ColorStateList.valueOf(iconColor))
setTextColor(iconColor)
chipStrokeColor = ColorStateList.valueOf(dividerColor)
}
}

View file

@ -30,13 +30,19 @@
</FrameLayout> </FrameLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:fillViewport="true" android:fillViewport="true"
android:overScrollMode="never"> android:overScrollMode="never">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -94,6 +100,7 @@
<include layout="@layout/activity_album_content" /> <include layout="@layout/activity_album_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</LinearLayout> </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root" android:id="@+id/root"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -30,12 +31,18 @@
</FrameLayout> </FrameLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:overScrollMode="never"> android:overScrollMode="never">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -88,6 +95,7 @@
android:layout_height="@dimen/status_bar_padding" /> android:layout_height="@dimen/status_bar_padding" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</LinearLayout> </LinearLayout>

View file

@ -84,8 +84,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_height="48dp" android:layout_height="48dp"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -50,7 +50,7 @@
app:contentInsetLeft="0dp" app:contentInsetLeft="0dp"
app:contentInsetStart="0dp" app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp" app:contentInsetStartWithNavigation="0dp"
app:navigationIcon="@drawable/ic_keyboard_backspace_black_24dp" app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption" app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
app:titleMargin="0dp" app:titleMargin="0dp"
app:titleMarginStart="0dp" app:titleMarginStart="0dp"

View file

@ -18,7 +18,9 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:background="@android:color/transparent" /> android:background="@android:color/transparent"
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -78,11 +80,11 @@
android:id="@+id/playingQueueCard" android:id="@+id/playingQueueCard"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
sothree:cardCornerRadius="12dp"
android:layout_marginBottom="-8dp" android:layout_marginBottom="-8dp"
app:cardBackgroundColor="?cardBackgroundColor" app:cardBackgroundColor="?cardBackgroundColor"
app:cardElevation="@dimen/card_elevation" app:cardElevation="@dimen/card_elevation"
app:cardUseCompatPadding="false"> app:cardUseCompatPadding="false"
sothree:cardCornerRadius="12dp">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -43,9 +43,9 @@
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="12dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="8dp" app:cardElevation="8dp"
android:layout_margin="12dp"
app:cardPreventCornerOverlap="false" app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"> app:cardUseCompatPadding="true">
@ -119,8 +119,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -63,8 +63,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
<fragment <fragment

View file

@ -31,9 +31,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="0dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways"
app:strokeColor="?dividerColor"
app:strokeWidth="1dp">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"

View file

@ -70,8 +70,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -105,8 +105,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

View file

@ -12,10 +12,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.jetradarmobile.snowfall.SnowfallView
android:id="@+id/snowfall"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/shadow_statusbar_toolbar" /> <include layout="@layout/shadow_statusbar_toolbar" />
@ -67,8 +63,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
<fragment <fragment

View file

@ -73,8 +73,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -41,7 +41,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill_vertical" android:layout_gravity="fill_vertical"
@ -52,6 +51,13 @@
android:overScrollMode="never" android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -119,7 +125,7 @@
<include layout="@layout/activity_album_content" /> <include layout="@layout/activity_album_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<View <View

View file

@ -39,18 +39,23 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill_vertical" android:layout_gravity="fill_vertical"
android:layout_marginStart="128dp" android:layout_marginStart="128dp"
android:layout_marginEnd="128dp" android:layout_marginEnd="128dp"
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
android:fillViewport="true" android:fillViewport="true"
android:overScrollMode="never" android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior" app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:background="@color/md_red_500"> tools:background="@color/md_red_500">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -93,5 +98,6 @@
<include layout="@layout/activity_artist_content" /> <include layout="@layout/activity_artist_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -30,7 +30,7 @@
<FrameLayout <FrameLayout
android:id="@+id/imageContainer" android:id="@+id/imageContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="228dp" android:layout_height="258dp"
app:layout_collapseMode="parallax"> app:layout_collapseMode="parallax">
<ImageView <ImageView
@ -63,6 +63,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="6dp"
android:layout_marginStart="128dp"
android:layout_marginEnd="128dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways">

View file

@ -73,10 +73,10 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_height="48dp" android:layout_height="48dp"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -31,10 +31,14 @@
android:id="@+id/toolbarContainer" android:id="@+id/toolbarContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="0dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways"
app:strokeColor="?dividerColor"
app:strokeWidth="1dp">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"

View file

@ -12,11 +12,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.jetradarmobile.snowfall.SnowfallView
android:id="@+id/snowfall"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/shadow_statusbar_toolbar" /> <include layout="@layout/shadow_statusbar_toolbar" />
<code.name.monkey.retromusic.views.FitSystemWindowsLayout <code.name.monkey.retromusic.views.FitSystemWindowsLayout
@ -66,7 +61,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_close_white_24dp" /> android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -13,10 +13,7 @@
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="24dp" android:padding="24dp">
android:paddingTop="10dp"
android:paddingEnd="24dp"
android:paddingBottom="10dp">
<code.name.monkey.retromusic.views.CircularImageView <code.name.monkey.retromusic.views.CircularImageView
android:id="@+id/userImage" android:id="@+id/userImage"

View file

@ -42,17 +42,22 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill_vertical" android:layout_gravity="fill_vertical"
android:layout_marginStart="96dp" android:layout_marginStart="96dp"
android:layout_marginEnd="96dp" android:layout_marginEnd="96dp"
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
android:fillViewport="true" android:fillViewport="true"
android:overScrollMode="never" android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -61,6 +66,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:baselineAligned="false"
android:orientation="horizontal"> android:orientation="horizontal">
<code.name.monkey.retromusic.views.WidthFitSquareLayout <code.name.monkey.retromusic.views.WidthFitSquareLayout
@ -119,9 +125,9 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<include layout="@layout/activity_album_content" /> <include layout="@layout/activity_album_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<View <View

View file

@ -40,17 +40,22 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill_vertical" android:layout_gravity="fill_vertical"
android:layout_marginStart="96dp" android:layout_marginStart="96dp"
android:layout_marginEnd="96dp" android:layout_marginEnd="96dp"
android:background="@drawable/bg_bottom_sheet_dialog_fragment"
android:fillViewport="true" android:fillViewport="true"
android:overScrollMode="never" android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -96,5 +101,6 @@
<include layout="@layout/activity_artist_content" /> <include layout="@layout/activity_artist_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -98,12 +98,12 @@
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/nameContainer" android:id="@+id/nameContainer"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
app:hintEnabled="true"> app:hintEnabled="true">
@ -119,12 +119,12 @@
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/bioContainer" android:id="@+id/bioContainer"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
app:hintEnabled="true"> app:hintEnabled="true">
@ -135,7 +135,8 @@
android:background="@null" android:background="@null"
android:hint="@string/bio" android:hint="@string/bio"
android:inputType="textPersonName|textCapWords|text" android:inputType="textPersonName|textCapWords|text"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" /> android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:visibility="gone" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@ -147,8 +148,8 @@
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:layout_margin="16dp" android:layout_margin="16dp"
android:gravity="center" android:gravity="center"
app:iconGravity="textStart"
android:padding="16dp" android:padding="16dp"
android:text="@string/save" android:text="@string/save"
app:icon="@drawable/ic_save_white_24dp" /> app:icon="@drawable/ic_save_white_24dp"
app:iconGravity="textStart" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -30,7 +30,7 @@
<FrameLayout <FrameLayout
android:id="@+id/imageContainer" android:id="@+id/imageContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="196dp" android:layout_height="228dp"
app:layout_collapseMode="parallax"> app:layout_collapseMode="parallax">
<ImageView <ImageView
@ -61,6 +61,8 @@
android:id="@+id/toolbarContainer" android:id="@+id/toolbarContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="64dp"
android:layout_marginEnd="64dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="6dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
@ -70,8 +72,8 @@
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Toolbar" style="@style/Toolbar"
app:title="@string/search_hint" app:title="@string/search_hint"
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
app:titleMarginStart="0dp" app:titleMarginStart="0dp"
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
</LinearLayout> </LinearLayout>

View file

@ -81,8 +81,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_height="48dp" android:layout_height="48dp"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -32,16 +32,20 @@
android:id="@+id/toolbarContainer" android:id="@+id/toolbarContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="64dp"
android:layout_marginEnd="64dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="0dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways"
app:strokeColor="?dividerColor"
app:strokeWidth="1dp">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Toolbar" style="@style/Toolbar"
app:titleMarginStart="0dp"
app:title="@string/search_hint" app:title="@string/search_hint"
app:titleMarginStart="0dp"
app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1" app:titleTextAppearance="@style/TextAppearance.MaterialComponents.Body1"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>

View file

@ -11,10 +11,7 @@
android:id="@+id/colorGradientBackground" android:id="@+id/colorGradientBackground"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.jetradarmobile.snowfall.SnowfallView
android:id="@+id/snowfall"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/shadow_statusbar_toolbar" /> <include layout="@layout/shadow_statusbar_toolbar" />
<code.name.monkey.retromusic.views.FitSystemWindowsLayout <code.name.monkey.retromusic.views.FitSystemWindowsLayout
@ -29,6 +26,12 @@
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/status_bar" />
</FrameLayout>
<code.name.monkey.retromusic.views.WidthFitSquareLayout <code.name.monkey.retromusic.views.WidthFitSquareLayout
android:id="@+id/album_cover_container" android:id="@+id/album_cover_container"
@ -64,8 +67,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -46,12 +46,17 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:behavior_overlapTop="24dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer" android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_circular_top_corners" app:cardCornerRadius="16dp"
app:behavior_overlapTop="24dp" app:cardElevation="0dp">
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -110,5 +115,6 @@
<include layout="@layout/activity_album_content" /> <include layout="@layout/activity_album_content" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -47,14 +47,19 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_circular_top_corners"
android:overScrollMode="never" android:overScrollMode="never"
app:behavior_overlapTop="24dp" app:behavior_overlapTop="24dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.card.MaterialCardView
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -96,5 +101,6 @@
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -19,9 +19,14 @@
android:id="@+id/searchContainer" android:id="@+id/searchContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="0dp"
app:cardUseCompatPadding="true"> app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"
app:strokeColor="?dividerColor"
app:strokeWidth="1dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -95,6 +100,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|end" android:layout_gravity="bottom|end"
android:layout_margin="16dp" android:layout_margin="16dp"
android:text="Keyboard" android:text="@string/keyboard"
app:icon="@drawable/ic_keyboard_white_24dp" /> app:icon="@drawable/ic_keyboard_white_24dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View file

@ -35,7 +35,9 @@
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="12dp" android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="12dp"
app:cardCornerRadius="12dp" app:cardCornerRadius="12dp"
app:cardUseCompatPadding="true"> app:cardUseCompatPadding="true">

View file

@ -58,6 +58,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="6dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways">

View file

@ -75,8 +75,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_height="48dp" android:layout_height="48dp"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -54,7 +54,7 @@
app:contentInsetLeft="0dp" app:contentInsetLeft="0dp"
app:contentInsetStart="0dp" app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp" app:contentInsetStartWithNavigation="0dp"
app:navigationIcon="@drawable/ic_keyboard_backspace_black_24dp" app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption" app:subtitleTextAppearance="@style/TextAppearance.AppCompat.Caption"
app:titleMargin="0dp" app:titleMargin="0dp"
app:titleMarginStart="0dp" app:titleMarginStart="0dp"

View file

@ -76,7 +76,9 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:background="@android:color/transparent" /> android:background="@android:color/transparent"
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
@ -100,9 +102,9 @@
sothree:cardCornerRadius="12dp"> sothree:cardCornerRadius="12dp">
<RelativeLayout <RelativeLayout
android:background="?cardBackgroundColor"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:background="?cardBackgroundColor">
<!--This is necessary for the drag sorting to work at the top--> <!--This is necessary for the drag sorting to work at the top-->
<View <View

View file

@ -115,8 +115,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

View file

@ -43,16 +43,13 @@
android:textSize="12sp" android:textSize="12sp"
tools:ignore="RtlHardcoded,RtlSymmetry" /> tools:ignore="RtlHardcoded,RtlSymmetry" />
<SeekBar <androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toLeftOf="@id/songTotalTime" android:layout_toLeftOf="@id/songTotalTime"
android:layout_toRightOf="@id/songCurrentProgress" android:layout_toRightOf="@id/songCurrentProgress"
android:maxHeight="3dp"
android:progressDrawable="@drawable/color_progress_seek"
android:splitTrack="false"
tools:ignore="RtlHardcoded,UnusedAttribute" tools:ignore="RtlHardcoded,UnusedAttribute"
tools:progress="20" /> tools:progress="20" />
</RelativeLayout> </RelativeLayout>

View file

@ -48,8 +48,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

View file

@ -40,8 +40,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
<code.name.monkey.retromusic.views.WidthFitSquareLayout <code.name.monkey.retromusic.views.WidthFitSquareLayout

View file

@ -58,7 +58,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp"> android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -29,7 +29,11 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:cardElevation="6dp" app:cardElevation="0dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:strokeColor="?dividerColor"
app:strokeWidth="1dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways">

View file

@ -34,7 +34,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="8dp" app:cardCornerRadius="8dp"
app:strokeColor="@color/black_color" app:cardElevation="0dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:strokeColor="?dividerColor"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
app:layout_scrollFlags="scroll|enterAlways" app:layout_scrollFlags="scroll|enterAlways"
app:strokeWidth="1dp"> app:strokeWidth="1dp">

View file

@ -26,7 +26,7 @@
<code.name.monkey.retromusic.views.IconImageView <code.name.monkey.retromusic.views.IconImageView
android:layout_width="96dp" android:layout_width="96dp"
android:layout_height="96dp" android:layout_height="96dp"
app:srcCompat="@drawable/ic_disc_full_black_24dp" /> app:srcCompat="@drawable/ic_music_note_off_white_24dp" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/emptyText" android:id="@+id/emptyText"

View file

@ -60,8 +60,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -92,8 +92,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -12,10 +12,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.jetradarmobile.snowfall.SnowfallView
android:id="@+id/snowfall"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/shadow_statusbar_toolbar" /> <include layout="@layout/shadow_statusbar_toolbar" />
@ -72,8 +68,8 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -27,7 +27,6 @@
<include layout="@layout/status_bar" /> <include layout="@layout/status_bar" />
</FrameLayout> </FrameLayout>
<code.name.monkey.retromusic.views.WidthFitSquareLayout <code.name.monkey.retromusic.views.WidthFitSquareLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -61,8 +60,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:navigationIcon="@drawable/ic_close_white_24dp" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_close_white_24dp" /> app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</code.name.monkey.retromusic.views.FitSystemWindowsLayout> </code.name.monkey.retromusic.views.FitSystemWindowsLayout>

View file

@ -101,7 +101,8 @@
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
app:navigationIcon="@drawable/ic_close_white_24dp" /> android:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp"
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black_24dp" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/viewGroup" android:id="@+id/viewGroup"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -21,8 +22,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:maxHeight="3dp" tools:progress="20" />
android:progressDrawable="@drawable/color_progress_seek" />
<code.name.monkey.retromusic.views.IconImageView <code.name.monkey.retromusic.views.IconImageView
android:id="@+id/volumeUp" android:id="@+id/volumeUp"

View file

@ -17,6 +17,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/contentContainer" android:id="@+id/contentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -40,19 +41,20 @@
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
tools:visibility="visible"
android:visibility="gone"> android:visibility="gone">
<code.name.monkey.retromusic.views.IconImageView <code.name.monkey.retromusic.views.IconImageView
android:layout_width="96dp" android:layout_width="96dp"
android:layout_height="96dp" android:layout_height="96dp"
app:srcCompat="@drawable/ic_disc_full_black_24dp" /> app:srcCompat="@drawable/ic_play_arrow_white_64dp" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/emptyText" android:id="@+id/emptyText"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:text="@string/empty" android:text="@string/start_play_music"
android:textColor="?android:textColorSecondary" /> android:textColor="?android:textColorSecondary" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -26,7 +26,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="4dp"
android:layout_weight="1" android:layout_weight="1"
android:padding="10dp" android:padding="10dp"
android:text="@string/action_play_all" android:text="@string/action_play_all"
@ -41,7 +41,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="4dp"
android:layout_weight="1" android:layout_weight="1"
android:padding="10dp" android:padding="10dp"
android:text="@string/shuffle" android:text="@string/shuffle"

View file

@ -1,37 +1,25 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingBottom="12dp"> android:paddingBottom="12dp">
<LinearLayout <code.name.monkey.retromusic.views.RetroChip
android:id="@+id/chipHead"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="12dp" android:layout_margin="12dp"
android:background="@drawable/material_design_outline" android:fontFamily="@font/circular"
android:backgroundTint="?dividerColor" android:textColor="?android:textColorSecondary"
android:gravity="center_vertical" app:chipIconTint="?iconColor"
android:paddingStart="12dp" app:chipStrokeColor="?dividerColor"
android:paddingTop="6dp" app:chipStrokeWidth="1dp"
android:paddingEnd="12dp" app:iconStartPadding="8dp"
android:paddingBottom="6dp"> tools:chipIcon="@drawable/ic_person_white_24dp"
tools:text="@string/for_you" />
<code.name.monkey.retromusic.views.IconImageView
android:id="@+id/sectionIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
app:srcCompat="@drawable/ic_person_white_24dp" />
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
android:id="@+id/sectionTitle"
style="@style/SubTitleTextAppearance"
android:padding="0dp"
android:text="@string/for_you" />
</LinearLayout>
<code.name.monkey.retromusic.views.MetalRecyclerViewPager <code.name.monkey.retromusic.views.MetalRecyclerViewPager
android:id="@+id/recyclerView" android:id="@+id/recyclerView"

View file

@ -2,37 +2,24 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recentArtistContainer" android:id="@+id/recentArtistContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <code.name.monkey.retromusic.views.RetroChip
android:id="@+id/chipHead"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="12dp" android:layout_margin="12dp"
android:background="@drawable/material_design_outline" android:fontFamily="@font/circular"
android:backgroundTint="?dividerColor" app:chipIconTint="?iconColor"
android:gravity="center_vertical" app:chipStrokeColor="?dividerColor"
android:paddingStart="12dp" app:chipStrokeWidth="1dp"
android:paddingTop="6dp" app:iconStartPadding="8dp"
android:paddingEnd="12dp" tools:chipIcon="@drawable/ic_person_white_24dp"
android:paddingBottom="6dp"> tools:text="@string/for_you" />
<code.name.monkey.retromusic.views.IconImageView
android:id="@+id/sectionIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
app:srcCompat="@drawable/ic_person_white_24dp" />
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
android:id="@+id/sectionTitle"
style="@style/SubTitleTextAppearance"
android:padding="0dp"
android:text="@string/for_you" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"

View file

@ -1,11 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources> <resources>
<string name="synced_lyrics">扫描到的歌词</string>
<string name="songs">歌曲</string>
<string name="action_play_all">全部播放</string>
<string name="search_hint">搜索您的资料库…</string>
<string name="recent_albums">您最近播放过的专辑</string>
<string name="recent_artists">您最近听过 TA 们的歌</string>
<string name="small">小专辑</string>
<string name="welcome">欢迎您,</string>
<string name="top_albums">脱颖专辑</string>
<string name="top_artists">脱颖艺人</string>
<string name="pref_title_blacklist">黑名单</string>
<string name="set_artist_image">设置艺人图片</string>
<string name="reset_artist_image">重置艺人图片</string>
<string name="accent_color">强调色</string> <string name="accent_color">强调色</string>
<string name="accent_color_desc">主题强调色,默认为蓝绿色。</string> <string name="pref_title_album_cover_style">封面主题</string>
<string name="accent_color_desc">主题强调色,默认为蓝绿。</string>
<string name="profile">个人资料</string>
<string name="action_about">关于</string> <string name="action_about">关于</string>
<string name="report_bug">反馈漏洞</string>
<string name="bug_report_use_account">使用 GitHub 账号发送反馈</string>
<string name="save_playlist_title">另存为文件</string>
<string name="save_playlists_title">另存为文件</string>
<string name="login">登陆</string>
<string name="bug_report_manual">手动发送</string>
<string name="you_will_be_forwarded_to_the_issue_tracker_website">您将会被导向至漏洞追踪器页面</string>
<string name="telegram_group_summary">加入我们的 Telegram 群组,与万千用户,以及我们的开发人员一起,解决漏洞,交流讨论,谈天说地</string>
<string name="bug_report_issue">问题</string>
<string name="title">标题</string>
<string name="description">描述</string>
<string name="username">用户名</string>
<string name="password">密码</string>
<string name="device_info">设备信息</string>
<string name="report_an_issue">反馈问题</string>
<string name="bug_report_no_username">请输入正确的 GitHub 用户名</string>
<string name="bug_report_no_password">请输入正确的 GitHub 密码</string>
<string name="bug_report_no_title">请输入问题的标题</string>
<string name="support_development">协助开发</string>
<string name="bug_report_no_description">请输入您对问题的描述</string>
<string name="bug_report_uploading">正在向 GitHub 提交您的问题…</string>
<string name="bug_report_failed">无法发送您的问题</string>
<string name="bug_report_failed_wrong_credentials">用户名或密码错误</string>
<string name="bug_report_failed_invalid_token">无效的访问令牌,请联系应用开发者。</string>
<string name="bug_report_failed_issues_not_available">未对所选存储库启用问题,请联系应用开发者。</string>
<string name="bug_report_failed_unknown">发生了意料之外的问题,请联系应用开发者</string>
<string name="translate">翻译</string>
<string name="translate_community">帮助我们使这款播放器以您的语言呈现内容</string>
<string name="copied_device_info_to_clipboard">已经把您的设备信息复制到剪贴板了</string>
<string name="action_add_to_favorites">添加到收藏夹</string> <string name="action_add_to_favorites">添加到收藏夹</string>
<string name="action_add_to_playing_queue">添加到播放队列</string> <string name="action_add_to_playing_queue">添加到播放队列</string>
<string name="action_add_to_playlist">添加到播放列表…</string> <string name="action_add_to_playlist">添加到播放列表</string>
<string name="action_clear_playing_queue">清空播放队列</string> <string name="action_clear_playing_queue">清空播放队列</string>
<string name="action_clear_playlist">清空播放列表</string> <string name="action_clear_playlist">清空播放列表</string>
<string name="action_delete">删除</string> <string name="action_delete">删除</string>
@ -37,12 +81,13 @@
<string name="action_settings">"设置"</string> <string name="action_settings">"设置"</string>
<string name="action_share">分享</string> <string name="action_share">分享</string>
<string name="action_shuffle_all">随机播放全部</string> <string name="action_shuffle_all">随机播放全部</string>
<string name="action_shuffle_playlist">随机播放播放列表</string> <string name="action_shuffle_playlist">随机播放列表</string>
<string name="action_sleep_timer">睡眠定时器</string> <string name="action_sleep_timer">睡眠定时器</string>
<string name="action_sort_order">排序</string> <string name="action_sort_order">排序</string>
<string name="action_tag_editor">标签编辑器</string> <string name="action_tag_editor">标签编辑器</string>
<string name="adaptive">自适应</string> <string name="adaptive">自适应</string>
<string name="add_action">添加</string> <string name="add_action">添加</string>
<string name="your_account_data_is_only_used_for_authentication">您的帐户数据将仅用于身份验证</string>
<string name="add_photo">添加\n头像</string> <string name="add_photo">添加\n头像</string>
<string name="add_playlist_title">"添加到播放列表"</string> <string name="add_playlist_title">"添加到播放列表"</string>
<string name="added_title_to_playing_queue">"已加入播放队列"</string> <string name="added_title_to_playing_queue">"已加入播放队列"</string>
@ -53,48 +98,60 @@
<string name="albums">专辑</string> <string name="albums">专辑</string>
<!-- Android Auto --> <!-- Android Auto -->
<string name="always">始终</string> <string name="always">始终</string>
<string name="app_share">嘿快来瞧瞧这个酷炫的音乐播放器:https://play.google.com/store/apps/details?id=%s</string> <string name="app_share">妈耶!这个音乐播放器帅到爆炸!https://play.google.com/store/apps/details?id=%s</string>
<!-- App Shortcuts --> <!-- App Shortcuts -->
<string name="app_shortcut_last_added_long">@string/last_added</string> <string name="app_shortcut_last_added_long">@string/last_added</string>
<string name="app_shortcut_last_added_short">@string/last_added</string> <string name="app_shortcut_last_added_short">@string/last_added</string>
<string name="app_shortcut_shuffle_all_long">@string/action_shuffle_all</string> <string name="app_shortcut_shuffle_all_long">@string/action_shuffle_all</string>
<string name="app_shortcut_top_tracks_long">@string/my_top_tracks</string> <string name="app_shortcut_top_tracks_long">@string/my_top_tracks</string>
<string name="app_shortcut_shuffle_all_short">随机播放</string> <string name="app_shortcut_shuffle_all_short">随机播放</string>
<string name="app_shortcut_top_tracks_short">顶级轨道</string> <string name="app_shortcut_top_tracks_short">畅响天籁</string>
<string name="app_widget_big_name">Retro音乐 - 大</string> <string name="app_widget_big_name">Retro Music - 大</string>
<string name="app_widget_card_name">Retro Music - 卡片模式</string> <string name="app_widget_card_name">Retro Music - 卡片模式</string>
<string name="app_widget_classic_name">Retro Music - 经典模式</string> <string name="app_widget_classic_name">Retro Music - 经典模式</string>
<string name="app_widget_small_name">Retro音乐 - 小</string> <string name="app_widget_small_name">Retro Music - 小</string>
<string name="artist">歌手</string> <string name="artist">歌手</string>
<string name="artists">歌手</string> <string name="artists">歌手</string>
<string name="audio_focus_denied">音频焦点丢失</string> <string name="audio_focus_denied">音频焦点丢失</string>
<string name="audio_settings_summary">更改声音设置和均衡器设置</string> <string name="audio_settings_summary">更改声音设置和均衡器设置</string>
<string name="bass_boost">低音增强</string> <string name="bass_boost">低音增强</string>
<string name="biography">简介</string> <string name="biography">简介</string>
<string name="black_theme_name">纯黑</string> <string name="black_theme_name"></string>
<string name="blacklist">黑名单</string> <string name="blacklist">黑名单</string>
<string name="blur">模糊</string> <string name="blur">模糊</string>
<string name="blur_card">模糊卡片</string> <string name="blur_card">模糊卡片</string>
<string name="pref_keep_screen_on_title">屏幕常亮</string> <string name="pref_keep_screen_on_title">屏幕常亮</string>
<string name="pref_keep_screen_on_summary">请注意,启用此功能可能会降低电池续航时间</string> <string name="pref_keep_screen_on_summary">请注意,启用此功能可能会降低电池续航时间</string>
<string name="pref_blur_amount_title">模糊</string> <string name="pref_blur_amount_title">模糊</string>
<string name="pref_blur_amount_summary">应用于模糊主题,数量越低加载越快</string> <string name="pref_blur_amount_summary">应用于模糊主题,数量越低加载越快</string>
<string name="cancel_current_timer">取消</string> <string name="cancel_current_timer">取消</string>
<string name="card">卡片</string> <string name="card">卡片</string>
<string name="card_color_style">彩色卡片</string> <string name="card_color_style">彩色卡片</string>
<string name="card_circular_style">圆形</string> <string name="card_circular_style">圆形</string>
<string name="select_banner_photo">背景图</string>
<string name="new_banner_photo">选择一张新背景图</string>
<string name="remove_banner_photo">移除当前背景图</string>
<string name="new_profile_photo">选择一张新头像</string>
<string name="image">图片</string> <string name="image">图片</string>
<string name="card_style">卡片</string> <string name="set">应用</string>
<string name="card_style">卡片式</string>
<string name="today">当天</string>
<string name="this_month">一个月内</string>
<string name="this_week">一周内</string>
<string name="this_year">一年内</string>
<string name="pref_filter_song_title">筛选歌曲时长</string>
<string name="cast">投射</string> <string name="cast">投射</string>
<string name="changelog">更新日志</string> <string name="changelog">更新日志</string>
<string name="changelog_summary">在Telegram频道上维护更新日志</string> <string name="changelog_summary">在 Telegram 频道上维护更新日志</string>
<string name="clear_action">透明</string> <string name="pref_summary_blacklist">被列入黑名单的文件夹中的音频,将不会出现在播放器中</string>
<string name="clear_action">清除</string>
<string name="clear_blacklist">清空黑名单</string> <string name="clear_blacklist">清空黑名单</string>
<string name="clear_playlist_title">清除播放列表</string> <string name="clear_playlist_title">清除播放列表</string>
<string name="clear_playlist_x"><![CDATA[\u786e\u8ba4\u6e05\u9664\u64ad\u653e\u5217\u8868 <b>%1$s</b> \u5417\uff1f\u8bf7\u6ce8\u610f\uff0c\u6b64\u64cd\u4f5c\u4e0d\u53ef\u6062\u590d\uff01]]></string> <string name="clear_playlist_x"><![CDATA[\u786e\u8ba4\u6e05\u9664\u64ad\u653e\u5217\u8868 <b>%1$s</b> \u5417\uff1f\u8bf7\u6ce8\u610f\uff0c\u6b64\u64cd\u4f5c\u4e0d\u53ef\u6062\u590d\uff01]]></string>
<string name="close_notification">关闭</string> <string name="close_notification">关闭</string>
<string name="color">颜色</string> <string name="color">多彩</string>
<string name="color_theme_name">颜色</string> <string name="color_theme_name">自定义</string>
<string name="primary_color_desc">播放器的主色调,默认蓝灰色。使用深色效果更佳。</string>
<string name="colors">更多颜色</string> <string name="colors">更多颜色</string>
<string name="could_not_create_playlist">\u4e0d\u80fd\u521b\u5efa\u64ad\u653e\u5217\u8868</string> <string name="could_not_create_playlist">\u4e0d\u80fd\u521b\u5efa\u64ad\u653e\u5217\u8868</string>
<string name="could_not_download_album_cover">"\u65e0\u6cd5\u4e0b\u8f7d\u5339\u914d\u7684\u4e13\u8f91\u5c01\u9762"</string> <string name="could_not_download_album_cover">"\u65e0\u6cd5\u4e0b\u8f7d\u5339\u914d\u7684\u4e13\u8f91\u5c01\u9762"</string>
@ -104,7 +161,7 @@
<string name="created_playlist_x">已创建播放列表 %1$s</string> <string name="created_playlist_x">已创建播放列表 %1$s</string>
<string name="credit_title">开发团队和贡献者</string> <string name="credit_title">开发团队和贡献者</string>
<string name="currently_listening_to_x_by_x">当前通过 %2$s 收听 %1$s</string> <string name="currently_listening_to_x_by_x">当前通过 %2$s 收听 %1$s</string>
<string name="dark_theme_name">浅黑</string> <string name="dark_theme_name">深空灰</string>
<string name="default_hint">没有歌词</string> <string name="default_hint">没有歌词</string>
<string name="delete_playlist_title">删除播放列表</string> <string name="delete_playlist_title">删除播放列表</string>
<string name="delete_playlist_x"><![CDATA[确认删除播放列表 <b>%1$s</b> 吗?]]></string> <string name="delete_playlist_x"><![CDATA[确认删除播放列表 <b>%1$s</b> 吗?]]></string>
@ -113,11 +170,13 @@
<string name="delete_x_playlists"><![CDATA[删除播放列表 <b>%1$s</b> 吗?]]></string> <string name="delete_x_playlists"><![CDATA[删除播放列表 <b>%1$s</b> 吗?]]></string>
<string name="delete_x_songs"><![CDATA[删除歌曲 <b>%1$s</b> 吗?]]></string> <string name="delete_x_songs"><![CDATA[删除歌曲 <b>%1$s</b> 吗?]]></string>
<string name="deleted_x_songs">已删除 %1$d 首歌曲</string> <string name="deleted_x_songs">已删除 %1$d 首歌曲</string>
<string name="do_you_want_to_clear_the_blacklist">想清除黑名单吗?</string> <string name="do_you_want_to_clear_the_blacklist">想清除黑名单吗?</string>
<string name="do_you_want_to_remove_from_the_blacklist"><![CDATA[要从黑名单中删除 <b>%1$s</b> 吗?]]></string> <string name="do_you_want_to_remove_from_the_blacklist"><![CDATA[要从黑名单中删除 <b>%1$s</b> 吗?]]></string>
<string name="donate">捐赠</string> <string name="donate">赞助</string>
<string name="donate_summary">如果你觉得我的应用好用,你可以在这里捐赠一些资金,你的支持是我开发的动力</string> <string name="pinterest_page_summary">关注我们的 Pinterest 主页,随时随地了解我们的设计灵感吧!</string>
<string name="donation_header">用以下方式捐赠:</string> <string name="donate_summary">如果您觉得这款播放器还对你的胃口,欢迎您为这款应用赞助!您的支持,就是我最大的动力!</string>
<string name="rate_on_google_play_summary">感觉还不错5 星好评一下怎么样!或者您也可以把您的想法留在评论里,帮助这款播放器锦上添花!</string>
<string name="donation_header">您可以使用以下方式赞助我们:</string>
<string name="download_from_last_fm">从 Last.fm 下载</string> <string name="download_from_last_fm">从 Last.fm 下载</string>
<string name="edit_cover">编辑专辑封面</string> <string name="edit_cover">编辑专辑封面</string>
<string name="empty">空空如也</string> <string name="empty">空空如也</string>
@ -126,20 +185,21 @@
<string name="favorites">收藏夹</string> <string name="favorites">收藏夹</string>
<string name="flat">扁平</string> <string name="flat">扁平</string>
<string name="folders">文件夹</string> <string name="folders">文件夹</string>
<string name="for_you">给你的</string> <string name="for_you">专属于您</string>
<string name="full"></string> <string name="full_card">卡片式全屏幕</string>
<string name="full">全屏幕</string>
<string name="general_settings_summary">更改应用的主题和颜色</string> <string name="general_settings_summary">更改应用的主题和颜色</string>
<string name="general_settings_title">界面外观</string> <string name="general_settings_title">界面外观</string>
<string name="genre">流派</string> <string name="genre">流派</string>
<string name="genres">流派</string> <string name="genres">流派</string>
<string name="git_hub_summary">GitHub上Fork项目</string> <string name="git_hub_summary"> GitHub 上 Fork 项目</string>
<string name="google_plus_community">加入Google+社区获得帮助或者更新信息</string> <string name="google_plus_community">加入 Google+ 社区获得帮助或者更新信息</string>
<string name="history">历史记录</string> <string name="history">历史记录</string>
<string name="home">主页</string> <string name="home">主页</string>
<string name="image_settings_summary">更改艺术家图片下载设置</string> <string name="image_settings_summary">更改艺术家图片下载设置</string>
<string name="inserted_x_songs_into_playlist_x">将歌曲%1$d加入%2$s列表</string> <string name="inserted_x_songs_into_playlist_x">将歌曲 %1$d 加入 %2$s 列表</string>
<string name="instagram_page">Instagram</string> <string name="instagram_page">Instagram</string>
<string name="instagram_page_summary">分享你的设置到Instagram</string> <string name="instagram_page_summary">分享您的设置到 Instagram</string>
<string name="label_bit_rate">比特率</string> <string name="label_bit_rate">比特率</string>
<string name="label_file_format">格式</string> <string name="label_file_format">格式</string>
<string name="label_file_name">文件名</string> <string name="label_file_name">文件名</string>
@ -147,47 +207,89 @@
<string name="label_file_size">大小</string> <string name="label_file_size">大小</string>
<string name="label_sampling_rate">采样率</string> <string name="label_sampling_rate">采样率</string>
<string name="label_track_length">长度</string> <string name="label_track_length">长度</string>
<string name="last_added">上次添加</string> <string name="last_added">最近添加</string>
<string name="lets_play_something">来点音乐吧!</string> <string name="lets_play_something">来点音乐吧!</string>
<string name="library"></string> <string name="library">资料</string>
<string name="licenses">许可</string> <string name="licenses">许可</string>
<string name="light_theme_name"></string> <string name="light_theme_name">皓月</string>
<string name="listing_files">正在罗列所有文件</string> <string name="listing_files">正在罗列所有文件</string>
<string name="loading_products">加载产品...</string> <string name="loading_products">劳烦您稍等一下…(若始终无法加载,请尝试使用爬墙工具)</string>
<string name="lyrics">歌词</string> <string name="lyrics">歌词</string>
<string name="material"></string> <string name="material"></string>
<string name="my_name">我的名字</string> <string name="my_name">我的名字</string>
<string name="my_top_tracks">播放最多</string> <string name="my_top_tracks">我的最爱</string>
<string name="never">从不</string> <string name="never">从不</string>
<string name="new_playlist_title">新播放列表</string> <string name="new_playlist_title">新建播放列表</string>
<string name="new_profile_photo">新头像</string> <string name="new_start_directory">%s 是新的开始目录</string>
<string name="new_start_directory">%s是新的开始目录</string> <string name="no_albums">还没有专辑</string>
<string name="no_albums">无专辑</string> <string name="no_artists">还没有艺术家</string>
<string name="no_artists">无艺术家</string> <string name="no_audio_ID">"请先放首曲子,然后再试试"</string>
<string name="no_audio_ID">"先放首曲子,然后再试试"</string> <string name="no_equalizer">暂时没有均衡器</string>
<string name="no_equalizer">找不到均衡器</string>
<string name="no_genres">无流派</string> <string name="no_genres">无流派</string>
<string name="no_lyrics_found">找不到歌词</string> <string name="no_lyrics_found">找不到歌词</string>
<string name="no_playlists">播放列表</string> <string name="no_playlists">还没有创建播放列表</string>
<string name="no_purchase_found">找不到支付记录</string> <string name="no_purchase_found">找不到支付记录</string>
<string name="no_results">无结果</string> <string name="no_results">无结果</string>
<string name="no_songs">无歌曲</string> <string name="no_songs">无歌曲</string>
<string name="composer">作曲家</string>
<string name="track_hint">"音轨 (使用 2 来代表轨道 2或者使用 3004 来代表 CD3 轨道 4)"</string>
<string name="sort_order_composer">作曲家</string>
<string name="up_next">接下来</string>
<string name="the_audio_file">分享音频文件</string>
<string name="clear_playing_queue">清除播放队列</string>
<string name="normal">正常</string> <string name="normal">正常</string>
<string name="normal_lyrics">正常歌词</string> <string name="queue">播放队列</string>
<string name="normal_lyrics">一般歌词</string>
<string name="send_crash_log">发送崩溃日志</string>
<string name="normal_style">正常</string> <string name="normal_style">正常</string>
<string name="not_listed_in_media_store"><![CDATA[<b>%s</b>在多媒体商店没列出]]></string> <string name="edit">编辑</string>
<string name="add_lyrics">添加歌词</string>
<string name="paste_lyrics_here">将您的歌词粘贴在这里</string>
<string name="not_listed_in_media_store"><![CDATA[<b>%s</b> 未在 MediaStore 中列出]]></string>
<string name="nothing_to_scan">检索不到任何东西</string> <string name="nothing_to_scan">检索不到任何东西</string>
<string name="notification">通知烂</string> <string name="notification">通知烂</string>
<string name="notification_settings_summary">自定义通知栏风格</string> <string name="notification_settings_summary">自定义通知栏风格</string>
<string name="now_playing">正在播放</string> <string name="now_playing">正在播放</string>
<string name="now_playing_queue">播放队列</string> <string name="now_playing_queue">播放队列</string>
<string name="only_on_wifi">仅限Wi-Fi</string> <string name="only_on_wifi">仅限 Wi-Fi</string>
<string name="others">其他</string> <string name="others">其他</string>
<string name="past_three_months">前三个月</string> <string name="past_three_months">前三个月</string>
<string name="permission_external_storage_denied">无权访问外部存储</string> <string name="permission_external_storage_denied">无权访问外部存储</string>
<string name="permissions_denied">无权访问</string> <string name="permissions_denied">无权访问</string>
<string name="personalize">个性化</string> <string name="personalize">个性化</string>
<string name="personalize_settings_summary">自定义正在播放控件和UI控件</string> <string name="select_all">全选</string>
<string name="buy_retro_music_pro">Retro Music Pro</string>
<string name="buy_pro">购买 Retro Music Pro</string>
<string name="sort_order">排序</string>
<string name="sort_order_a_z">由 A 到 Z</string>
<string name="sort_order_album">以专辑</string>
<string name="sort_order_artist">以艺术家</string>
<string name="sort_order_date">以日期</string>
<string name="sort_order_year">以年代</string>
<string name="sort_order_z_a">由 Z 到 A</string>
<string name="title_dashboard">仪表盘</string>
<string name="title_good_afternoon">下午好</string>
<string name="title_good_day">祝您万事顺心</string>
<string name="title_good_evening">晚上好</string>
<string name="track_list">专辑曲目号</string>
<string name="song_duration">歌曲时长</string>
<string name="title_good_morning">早哇</string>
<string name="remove_cover">移除封面</string>
<string name="title_good_night">晚安</string>
<string name="title_user_info">请问您的名字是…</string>
<string name="thank_you">感谢您!</string>
<string name="classic">经典</string>
<string name="tiny">小图标</string>
<string name="simple">素雅</string>
<string name="save">保存</string>
<string name="speech_prompt">使用语音搜索您的资料库</string>
<string name="speech_not_supported">很抱歉,您的设备暂不支持语言输入!</string>
<string name="song">歌曲</string>
<string name="fit">适应</string>
<string name="plain">简约</string>
<string name="personalize_settings_summary">自定义播放控件和 UI 控件</string>
<string name="pick_from_local_storage">从本地选取</string> <string name="pick_from_local_storage">从本地选取</string>
<string name="playing_notification_description">播放通知栏提供播放/暂停等操作</string> <string name="playing_notification_description">播放通知栏提供播放/暂停等操作</string>
<string name="playing_notification_name">播放通知栏</string> <string name="playing_notification_name">播放通知栏</string>
@ -201,19 +303,21 @@
<string name="pref_header_lockscreen">锁屏</string> <string name="pref_header_lockscreen">锁屏</string>
<string name="pref_header_playlists">播放列表</string> <string name="pref_header_playlists">播放列表</string>
<string name="pref_only_lollipop">"仅在Android 5.x(Lollipop)上可用"</string> <string name="pref_only_lollipop">"仅在Android 5.x(Lollipop)上可用"</string>
<string name="pref_summary_album_art_on_lockscreen">将正在播放的歌曲专辑封面设置为锁屏壁纸</string> <string name="pref_summary_album_art_on_lockscreen">将正在播放的歌曲专辑封面设置为锁屏壁纸</string>
<string name="pref_summary_audio_ducking">系统音响起或消息提醒时降低音量</string> <string name="pref_summary_audio_ducking">系统音响起或消息提醒时降低音量</string>
<string name="pref_summary_blurred_album_art">在锁屏显示模糊化的专辑封面(可能会影响第三方应用或者小部件的正常运行)</string> <string name="pref_summary_blurred_album_art">在锁屏显示模糊化的专辑封面(可能会影响第三方应用或者小部件的正常运行)</string>
<string name="pref_summary_carousel_effect">正在播放界面轮播专辑封面,需要注意在卡片模式以及模糊卡片主题下无效</string> <string name="pref_summary_carousel_effect">播放界面轮播专辑封面。需要注意,在卡片模式以及模糊卡片主题下无效</string>
<string name="pref_summary_classic_notification">使用经典通知栏设计</string> <string name="pref_summary_classic_notification">使用经典通知栏设计</string>
<string name="pref_summary_colored_app">背景色以及控件色跟随正在播放界面的专辑封面变化</string> <string name="pref_summary_home_banner">切换主页横幅样式</string>
<string name="grid_style_label"><![CDATA[方格与风格]]></string>
<string name="pref_summary_colored_app">背景色以及控件色跟随播放界面的专辑封面变化</string>
<string name="pref_summary_colored_app_shortcuts">将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效</string> <string name="pref_summary_colored_app_shortcuts">将快捷方式颜色更改为强调色,每次颜色更改后需要切换一下该设置才能生效</string>
<string name="pref_summary_colored_navigation_bar">修改导航栏颜色为主调色</string> <string name="pref_summary_colored_navigation_bar">将主调色应用于导航栏</string>
<string name="pref_summary_colored_notification">"\u4fee\u6539\u901a\u77e5\u680f\u989c\u8272\u4e3a\u4e13\u8f91\u5c01\u9762\u7684\u4e3b\u8272\u8c03"</string> <string name="pref_summary_colored_notification">"\u4fee\u6539\u901a\u77e5\u680f\u989c\u8272\u4e3a\u4e13\u8f91\u5c01\u9762\u7684\u4e3b\u8272\u8c03"</string>
<string name="pref_summary_dominant_color">从专辑封面或艺术家图中选取主色调</string> <string name="pref_summary_dominant_color">从专辑封面或艺术家图中选取主色调</string>
<string name="pref_summary_gapless_playback">"在一些设备上可能会播放异常"</string> <string name="pref_summary_gapless_playback">"在一些设备上可能会播放异常"</string>
<string name="pref_summary_ignore_media_store_artwork">可以提高专辑封面的质量,但是加载时候会较慢。建议只在不满意图片分辨率时开启</string> <string name="pref_summary_ignore_media_store_artwork">可以提高专辑封面的质量,但是加载时候会较慢。建议只在不满意图片分辨率时开启</string>
<string name="pref_summary_lock_screen">使用Retro Music的自定义锁屏</string> <string name="pref_summary_lock_screen">使用 Retro Music 提供的自定义锁屏</string>
<string name="pref_summary_open_source_licences">开源许可详情</string> <string name="pref_summary_open_source_licences">开源许可详情</string>
<string name="pref_summary_round_corners">对应用边缘进行圆角化</string> <string name="pref_summary_round_corners">对应用边缘进行圆角化</string>
<string name="pref_summary_tab_titles">切换底部导航栏的标签标题</string> <string name="pref_summary_tab_titles">切换底部导航栏的标签标题</string>
@ -224,9 +328,9 @@
<string name="pref_summary_extra_controls">给迷你播放器添加额外控件</string> <string name="pref_summary_extra_controls">给迷你播放器添加额外控件</string>
<string name="pref_summary_genre_toggle">切换流派标签</string> <string name="pref_summary_genre_toggle">切换流派标签</string>
<string name="pref_title_album_art_on_lockscreen">显示专辑封面</string> <string name="pref_title_album_art_on_lockscreen">显示专辑封面</string>
<string name="pref_title_tab_text_mode">标签标题模式</string> <string name="pref_title_tab_text_mode">底栏文字显示</string>
<string name="pref_title_album_grid_style">专辑方格</string> <string name="pref_title_album_grid_style">专辑方格</string>
<string name="pref_title_app_shortcuts">带颜色的快捷方式</string> <string name="pref_title_app_shortcuts">彩色快捷方式</string>
<string name="pref_title_artist_grid_style">艺术家方格</string> <string name="pref_title_artist_grid_style">艺术家方格</string>
<string name="pref_title_audio_ducking">不显示的时候降低音量</string> <string name="pref_title_audio_ducking">不显示的时候降低音量</string>
<string name="pref_title_auto_download_artist_images">自动下载艺术家图片</string> <string name="pref_title_auto_download_artist_images">自动下载艺术家图片</string>
@ -234,16 +338,16 @@
<string name="pref_title_choose_equalizer">选择均衡器</string> <string name="pref_title_choose_equalizer">选择均衡器</string>
<string name="pref_title_classic_notification">经典通知栏设计</string> <string name="pref_title_classic_notification">经典通知栏设计</string>
<string name="pref_title_colored_app">自适应颜色</string> <string name="pref_title_colored_app">自适应颜色</string>
<string name="pref_title_colored_notification">带颜色的通知栏</string> <string name="pref_title_colored_notification">彩色通知栏</string>
<string name="pref_title_gapless_playback">无间隙连续播放</string> <string name="pref_title_gapless_playback">无间隙连续播放</string>
<string name="pref_title_general_theme">应用主题</string> <string name="pref_title_general_theme">应用主题</string>
<string name="pref_title_ignore_media_store_artwork">忽略多媒体商店封面</string> <string name="pref_title_ignore_media_store_artwork">忽略音乐商店提供的封面</string>
<string name="pref_title_last_added_interval">上次添加播放列表到现在的间隔</string> <string name="pref_title_last_added_interval">您认为多久之内才算是最近添加的?</string>
<string name="pref_title_lock_screen">全屏控件</string> <string name="pref_title_lock_screen">全屏控件</string>
<string name="pref_title_navigation_bar">带颜色的导航栏</string> <string name="pref_title_navigation_bar">带颜色的导航栏</string>
<string name="pref_title_now_playing_screen_appearance">播放主题</string> <string name="pref_title_now_playing_screen_appearance">播放主题</string>
<string name="pref_title_open_source_licences">开源许可</string> <string name="pref_title_open_source_licences">开源许可</string>
<string name="pref_title_round_corners"></string> <string name="pref_title_round_corners"></string>
<string name="pref_title_toggle_carousel_effect">轮播效果</string> <string name="pref_title_toggle_carousel_effect">轮播效果</string>
<string name="pref_title_toggle_dominant_color">主色调</string> <string name="pref_title_toggle_dominant_color">主色调</string>
<string name="pref_title_toggle_full_screen">全屏应用</string> <string name="pref_title_toggle_full_screen">全屏应用</string>
@ -255,31 +359,76 @@
<string name="pref_title_extra_controls">额外控件</string> <string name="pref_title_extra_controls">额外控件</string>
<string name="pref_title_home_banner">主页横幅</string> <string name="pref_title_home_banner">主页横幅</string>
<string name="pref_title_genre_toggle">显示流派标签</string> <string name="pref_title_genre_toggle">显示流派标签</string>
<string name="pref_title_album_cover_transform">正在播放的专辑封面风格</string> <string name="pref_title_album_cover_transform">播放界面专辑封面风格</string>
<string name="primary_color">主颜色</string> <string name="primary_color">主颜色</string>
<string name="rate_app">评价这个应用</string> <string name="rate_app">评价这个应用</string>
<string name="pref_keep_pause_on_zero_volume_title">静音时自动暂停</string>
<string name="pref_keep_pause_on_zero_volume_summary">当媒体音量降低至 0 时,音乐将自动暂停,而当您把音量提高时,则将会自动开始播放。该选项在此应用外依然可用。</string>
<string name="remove_action">删除</string> <string name="remove_action">删除</string>
<string name="remove_from_blacklist">从黑名单中移除</string> <string name="remove_from_blacklist">从黑名单中移除</string>
<string name="remove_profile_photo">删除简介照片</string> <string name="remove_profile_photo">移除当前头像</string>
<string name="remove_song_from_playlist_title">从播放列表中删除歌曲</string> <string name="remove_song_from_playlist_title">从播放列表中删除歌曲</string>
<string name="remove_songs_from_playlist_title">从播放列表中删除歌曲</string> <string name="remove_songs_from_playlist_title">从播放列表中删除歌曲</string>
<string name="rename_playlist_title">重命名播放列表</string> <string name="rename_playlist_title">重命名播放列表</string>
<string name="labeled">始终显示</string>
<string name="selected">显示当前页的文字</string>
<string name="unlabeled">不显示</string>
<!-- SAF --> <!-- SAF -->
<!-- SAF guide --> <!-- SAF guide -->
<string name="saving_changes">保存修改</string> <string name="saving_changes">保存修改</string>
<string name="scan_media">扫描媒体</string> <string name="scan_media">扫描媒体</string>
<!-- Message displayed when tag editing fails --> <!-- Message displayed when tag editing fails -->
<string name="twitter_page">推特</string> <string name="twitter_page">Twitter</string>
<string name="set_photo">设置头像</string>
<string name="auto">自动</string>
<string name="circular">圆形</string>
<string name="unplayable_file">\u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002</string> <string name="unplayable_file">\u65e0\u6cd5\u64ad\u653e\u8fd9\u9996\u6b4c\u3002</string>
<string name="update_image">更新图片</string> <string name="update_image">更新图片</string>
<string name="updating">更新中...</string> <string name="updating">更新中...</string>
<string name="version">版本</string> <string name="version">版本</string>
<string name="web_search">网络搜索</string> <string name="web_search">网络搜索</string>
<string name="what_do_you_want_to_share">你想分享什么?</string> <string name="other_settings_summary">仍处于测试阶段的高级功能</string>
<string name="what_do_you_want_to_share">您希望分享什么?</string>
<string name="pref_title_home_artist_grid_style">主页艺术家展示形式</string>
<string name="about_settings_summary">了解我们的团队,获取我们的社交账号以及联系方式</string>
<string name="year"></string> <string name="year"></string>
<string name="keyboard">显示键盘</string>
<string name="stack">堆叠</string>
<string name="image_gradient">渐变图片</string>
<string name="premium">成为高级会员</string>
<string name="upgrade_to_premium">升级成为高级会员</string>
<string name="purchase_summary">*请在决定购买前再三考虑,如果您购买之后后悔了,恕不提供退款服务。</string>
<string name="restore">恢复购买</string>
<string name="restored_previous_purchase_please_restart">已恢复先前购买的内容。只需重启播放器,您就能正常使用了!</string>
<string name="restored_previous_purchases">已恢复先前购买的内容。</string>
<string name="restoring_purchase">正在尝试恢复先前购买的内容…</string>
<string name="retro_equalizer">Retro Music 均衡器</string>
<string name="virtualizer">虚拟器</string>
<string name="depth">深度</string>
<string name="vertical_flip">垂直翻转</string>
<string name="cascading">传递</string>
<string name="horizontal_flip">水平翻转</string>
<string name="whats_new">来看看这次更新的亮点吧!</string>
<string name="saved_playlist_to">已保存播放列表至 %s.</string>
<string name="scanned_files">已扫描出 %1$d 个文件,总共有 %2$d 个</string>
<string name="sleep_timer_canceled">睡眠定时器已取消</string>
<string name="social">社交媒体</string>
<string name="hinge">合页</string>
<string name="select_preset">选择一个预设</string>
<string name="on">开启</string>
<string name="shuffle">随机播放</string> `
<string name="add_time_framed_lryics">加入带有时间轴的歌词</string>
<string name="dialog_title_set_ringtone">设置铃声</string>
<string name="dialog_message_set_ringtone">请允许 Retro Music 更改音频设置</string>
<string name="suggestion_songs">推荐</string>
<string name="twitter_page_summary">分享出您独一无二的 Retro Music</string>
<string name="start_play_music">来点音乐吧</string>
<string name="share_app">分享应用到…</string>
<string name="pro_summary">更多播放主题,轮播效果,色彩主题,等你解锁!</string>
<string name="clear_app_data">清除应用数据</string> <string name="clear_app_data">清除应用数据</string>
<string name="error">错误</string> <string name="error">错误</string>
<string name="now_playing_themes">9+种播放主题</string> <string name="window">窗口</string>
<string name="now_playing_themes">9 种以上播放主题</string>
<string name="carousal_effect_on_now_playing_screen">在播放界面使用轮播效果</string> <string name="carousal_effect_on_now_playing_screen">在播放界面使用轮播效果</string>
<string name="now_playing_summary">自定义播放界面</string> <string name="now_playing_summary">自定义播放界面</string>
</resources> </resources>

View file

@ -624,4 +624,5 @@
<string name="pro_summary">Now playing themes, Carousel effect, Color theme and more..</string> <string name="pro_summary">Now playing themes, Carousel effect, Color theme and more..</string>
<string name="action_play_all">Play all</string> <string name="action_play_all">Play all</string>
<string name="start_play_music">Start playing music.</string> <string name="start_play_music">Start playing music.</string>
<string name="keyboard">Keyboard</string>
</resources> </resources>

View file

@ -67,7 +67,7 @@
<item name="cardBackgroundColor">@color/card_dark_color</item> <item name="cardBackgroundColor">@color/card_dark_color</item>
<item name="defaultFooterColor">@color/dark_color</item> <item name="defaultFooterColor">@color/dark_color</item>
<item name="dividerColor">@color/dark_color</item> <item name="dividerColor">@color/md_grey_800</item>
<item name="iconColor">@color/ate_secondary_text_dark</item> <item name="iconColor">@color/ate_secondary_text_dark</item>

View file

@ -2,7 +2,7 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_general"> <code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_general">
<code.name.monkey.retromusic.preferences.MaterialListPreference <code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
android:defaultValue="dark" android:defaultValue="dark"
android:entries="@array/pref_general_theme_list_titles" android:entries="@array/pref_general_theme_list_titles"
android:entryValues="@array/pref_general_theme_list_values" android:entryValues="@array/pref_general_theme_list_values"

Some files were not shown because too many files have changed in this diff Show more