commit
01a4119a8d
54 changed files with 250 additions and 125 deletions
|
@ -32,8 +32,8 @@ android {
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|
||||||
applicationId "code.name.monkey.retromusic"
|
applicationId "code.name.monkey.retromusic"
|
||||||
versionCode 283
|
versionCode 286
|
||||||
versionName '3.0.550'
|
versionName '3.0.570'
|
||||||
|
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ dependencies {
|
||||||
implementation "com.google.android.material:material:$supportLibVersion"
|
implementation "com.google.android.material:material:$supportLibVersion"
|
||||||
|
|
||||||
implementation "com.squareup.retrofit2:retrofit:2.5.0"
|
implementation "com.squareup.retrofit2:retrofit:2.5.0"
|
||||||
implementation "com.squareup.retrofit2:converter-gson:2.4.0"
|
implementation "com.squareup.retrofit2:converter-gson:2.5.0"
|
||||||
implementation "com.squareup.retrofit2:adapter-rxjava2:2.5.0"
|
implementation "com.squareup.retrofit2:adapter-rxjava2:2.5.0"
|
||||||
|
|
||||||
implementation "com.afollestad.material-dialogs:core:$materialDialog"
|
implementation "com.afollestad.material-dialogs:core:$materialDialog"
|
||||||
|
@ -141,8 +141,8 @@ dependencies {
|
||||||
implementation 'com.github.bumptech.glide:glide:4.8.0'
|
implementation 'com.github.bumptech.glide:glide:4.8.0'
|
||||||
implementation 'com.github.bumptech.glide:okhttp3-integration:4.8.0'
|
implementation 'com.github.bumptech.glide:okhttp3-integration:4.8.0'
|
||||||
|
|
||||||
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
|
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
|
||||||
implementation 'io.reactivex.rxjava2:rxjava:2.1.17'
|
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
|
||||||
|
|
||||||
implementation('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') {
|
implementation('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') {
|
||||||
transitive = true
|
transitive = true
|
||||||
|
@ -167,6 +167,7 @@ dependencies {
|
||||||
|
|
||||||
kapt 'com.github.bumptech.glide:compiler:4.8.0'
|
kapt 'com.github.bumptech.glide:compiler:4.8.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||||
|
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
<activity android:name=".ui.activities.PurchaseActivity" />
|
<activity android:name=".ui.activities.PurchaseActivity" />
|
||||||
<activity android:name=".ui.activities.EqualizerActivity" />
|
<activity android:name=".ui.activities.EqualizerActivity" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activities.ErrorHandlerActivity"
|
android:name=".ui.activities.bugreport.ErrorHandlerActivity"
|
||||||
android:immersive="true"
|
android:immersive="true"
|
||||||
android:label="@string/error"
|
android:label="@string/error"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<html>
<head>
<style type="text/css">
* {
word-wrap: break-word;
}
{style-placeholder}
a {
color: #{link-color};
}
a:active {
color: #{link-color-active};
}
ul {
list-style-position: outside;
padding-left: 0;
padding-right: 0;
margin-left: 1em;
}
li {
padding-top: 8px;
}
</style>
</head>
<body>
<h4>v3.0.550</h4>
<h3>Highlights</h3>
<ul style="line-height=150%">
<li>Kotlin conversion from Good old Java</li>
<li>Outline style system icons</li>
<li>New Material Design principles and Guide lines</li>
<li>Holiday Theme</li>
</ul>
<h3>Changelog</h3>
<ul style="line-height:150%">
<li>Added favorite songs in home section</li>
<li>Combined home sections to single Recycler View to make load faster</li>
<li>Fixed app clear data when crash happens</li>
50</h4>
<li>Kotlin conversion from Good old Java</li>
<li>By default theme will be dark</li>
<li>Now you can add search app shortcut in home screen</li>
<li>Last selected Lyrics options saved</li>
<li>Fonts are removed to make it fast loading</li>
<li>Now you can add plain text home screen widget</li>
<h3>Highlights</h3>
<li>Bug report for better tracking with milestones</li>
<li>Snow fall effect can be enable from other settings(Works only one normal theme)</li>
<li>Click new music mix to play songs</li>
<h3>Highlights</h3>
<li>Kotlin conversion from Good old Java</li>
<li>Clear button for playing queue</li>
<li>Folder list back button</li>
<li>New theme Fit</li>
<li>On library click on toolbar for accessing main menu
</li>
<li>On home click on toolbar for accessing search
</li>
<ul style="line-height=150%">
50</h4>
<ul style="line-height=150%">
<h3>Highlights</h3>
</li>
<ul style="line-height=150%">
<ul style="line-height=150%">
<ul style="line-height=150%">
<li>Kotlin conversion from Good old Java</li>
<ul style="line-height=150%">
<li>Outline style system icons</li>
</li>
<ul style="line-height=150%">
<li>New Material Design principles and Guide lines</li>
<li>Improving lyrics page</li>
<li>Updated image loading libraries(might loose your current artist images)</li>
</ul>
<p>If you see entire app white or dark or black select same theme in settings to fix </p>
<p style="line-height:150%"><a href="https://github.com/h4h13/RetroMusicPlayer/wiki/FAQ">FAQ's</a>
</p>
<p style="line-height:150%">*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again. </p>
</body>
|
<html>
<head>
<style type="text/css">
* {
word-wrap: break-word;
}
{style-placeholder}
a {
color: #{link-color};
}
a:active {
color: #{link-color-active};
}
ul {
list-style-position: outside;
padding-left: 0;
padding-right: 0;
margin-left: 1em;
}
li {
padding-top: 8px;
}
</style>
</head>
<body>
<h4>v3.0.5<ul style="line-height=150%">
<h3>Changelog</h3>
<li>Kotlin conversion from Good old Java</li>
<li>Kotlin conversion from Good old Java</li>
50</h4>
<li>Kotlin conversion from Good old Java</li>
<h3>Highlights</h3>
<li>Kotlin conversion from Good old Java</li>
<ul style="line-height=150%">
<li>Kotlin conversion from Good old Java</li>
<li>Kotlin conversion from Good old Java</li>
<li>Kotlin conversion from Good old Java</li>
<li>Outline style system icons</li>
<li>Kotlin conversion from Good old Java</li>
<li>New Material Design principles and Guide lines</li>
</li>
</ul>
<p>If you see entire app white or dark or black select same theme in settings to fix </p>
<p style="line-height:150%"><a href="https://github.com/h4h13/RetroMusicPlayer/wiki/FAQ">FAQ's</a>
</p>
<p style="line-height:150%">*If you face any UI related issues you clear app data and cache, if its
not working try to
uninstall and install again. </p>
</body>
|
|
@ -24,7 +24,7 @@ import code.name.monkey.retromusic.R;
|
||||||
/**
|
/**
|
||||||
* @author Aidan Follestad (afollestad), modified by Karim Abou Zeid
|
* @author Aidan Follestad (afollestad), modified by Karim Abou Zeid
|
||||||
*/
|
*/
|
||||||
public class BlacklistFolderChooserDialog extends DialogFragment implements MaterialDialog.ListCallback {
|
public class BlacklistFolderChooserDialog extends DialogFragment /*implements MaterialDialog.ListCallback */{
|
||||||
|
|
||||||
private String initialPath = Environment.getExternalStorageDirectory().getAbsolutePath();
|
private String initialPath = Environment.getExternalStorageDirectory().getAbsolutePath();
|
||||||
private File parentFolder;
|
private File parentFolder;
|
||||||
|
@ -68,7 +68,7 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
/*@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||||
|
@ -102,9 +102,9 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate
|
||||||
.positiveText(R.string.add_action)
|
.positiveText(R.string.add_action)
|
||||||
.negativeText(android.R.string.cancel);
|
.negativeText(android.R.string.cancel);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
@Override
|
/*@Override
|
||||||
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence s) {
|
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence s) {
|
||||||
if (canGoUp && i == 0) {
|
if (canGoUp && i == 0) {
|
||||||
parentFolder = parentFolder.getParentFile();
|
parentFolder = parentFolder.getParentFile();
|
||||||
|
@ -120,7 +120,7 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reload();
|
reload();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private void checkIfCanGoUp() {
|
private void checkIfCanGoUp() {
|
||||||
canGoUp = parentFolder.getParent() != null;
|
canGoUp = parentFolder.getParent() != null;
|
||||||
|
@ -130,7 +130,7 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate
|
||||||
parentContents = listFiles();
|
parentContents = listFiles();
|
||||||
MaterialDialog dialog = (MaterialDialog) getDialog();
|
MaterialDialog dialog = (MaterialDialog) getDialog();
|
||||||
dialog.setTitle(parentFolder.getAbsolutePath());
|
dialog.setTitle(parentFolder.getAbsolutePath());
|
||||||
dialog.setItems((CharSequence[]) getContentsArray());
|
//dialog.setItems((CharSequence[]) getContentsArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -30,7 +30,7 @@ class DeleteSongsDialog : RoundedBottomSheetDialogFragment() {
|
||||||
} else {
|
} else {
|
||||||
getString(R.string.delete_song_x, songs[0].title)
|
getString(R.string.delete_song_x, songs[0].title)
|
||||||
}
|
}
|
||||||
dialogTitle.text = content
|
dialogTitle.text = Html.fromHtml(content)
|
||||||
}
|
}
|
||||||
actionDelete.apply {
|
actionDelete.apply {
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,9 +5,6 @@ import android.app.PendingIntent
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.PorterDuff
|
|
||||||
import android.graphics.drawable.ClipDrawable
|
|
||||||
import android.graphics.drawable.LayerDrawable
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.CountDownTimer
|
import android.os.CountDownTimer
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
|
@ -24,6 +21,7 @@ import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.service.MusicService
|
import code.name.monkey.retromusic.service.MusicService
|
||||||
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.ViewUtil
|
||||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||||
import kotlinx.android.synthetic.main.dialog_sleep_timer.*
|
import kotlinx.android.synthetic.main.dialog_sleep_timer.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -50,9 +48,7 @@ class SleepTimerDialog : RoundedBottomSheetDialogFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setProgressBarColor(dark: Int) {
|
private fun setProgressBarColor(dark: Int) {
|
||||||
val ld = seekBar.progressDrawable as LayerDrawable
|
ViewUtil.setProgressDrawable(progressSlider = seekBar, newColor = dark)
|
||||||
val clipDrawable = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable
|
|
||||||
clipDrawable.setColorFilter(dark, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
@ -68,7 +64,9 @@ class SleepTimerDialog : RoundedBottomSheetDialogFragment() {
|
||||||
seekArcProgress = PreferenceUtil.getInstance().lastSleepTimerValue
|
seekArcProgress = PreferenceUtil.getInstance().lastSleepTimerValue
|
||||||
updateTimeDisplayTime()
|
updateTimeDisplayTime()
|
||||||
seekBar.progress = seekArcProgress
|
seekBar.progress = seekArcProgress
|
||||||
|
|
||||||
setProgressBarColor(ThemeStore.accentColor(context!!))
|
setProgressBarColor(ThemeStore.accentColor(context!!))
|
||||||
|
|
||||||
seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) {
|
||||||
if (i < 1) {
|
if (i < 1) {
|
||||||
|
|
|
@ -13,12 +13,12 @@ import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.model.Song
|
import code.name.monkey.retromusic.model.Song
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import code.name.monkey.retromusic.util.MusicUtil
|
||||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||||
import kotlinx.android.synthetic.main.dialog_delete.*
|
import kotlinx.android.synthetic.main.dialog_file_share.*
|
||||||
|
|
||||||
|
|
||||||
class SongShareDialog : RoundedBottomSheetDialogFragment() {
|
class SongShareDialog : RoundedBottomSheetDialogFragment() {
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
return inflater.inflate(R.layout.dialog_delete, container, false)
|
return inflater.inflate(R.layout.dialog_file_share, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("StringFormatInvalid")
|
@SuppressLint("StringFormatInvalid")
|
||||||
|
@ -27,7 +27,7 @@ class SongShareDialog : RoundedBottomSheetDialogFragment() {
|
||||||
val song = arguments!!.getParcelable<Song>("song")!!
|
val song = arguments!!.getParcelable<Song>("song")!!
|
||||||
dialogTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
dialogTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||||
|
|
||||||
actionDelete.apply {
|
audioText.apply {
|
||||||
text = getString(R.string.currently_listening_to_x_by_x, song.title, song.artistName)
|
text = getString(R.string.currently_listening_to_x_by_x, song.title, song.artistName)
|
||||||
setTextColor(ThemeStore.textColorSecondary(context!!))
|
setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
|
@ -41,15 +41,16 @@ class SongShareDialog : RoundedBottomSheetDialogFragment() {
|
||||||
MaterialUtil.setTint(this)
|
MaterialUtil.setTint(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
actionCancel.apply {
|
audioFile.apply {
|
||||||
setTextColor(ThemeStore.textColorSecondary(context!!))
|
setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
MusicUtil.createShareSongFileIntent(song, context)
|
activity!!.startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, activity), null))
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
icon = ContextCompat.getDrawable(context, R.drawable.ic_share_white_24dp)
|
icon = ContextCompat.getDrawable(context, R.drawable.ic_share_white_24dp)
|
||||||
MaterialUtil.setTint(this, false)
|
MaterialUtil.setTint(this, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package code.name.monkey.retromusic.helper
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import code.name.monkey.retromusic.App
|
import code.name.monkey.retromusic.App
|
||||||
import code.name.monkey.retromusic.ui.activities.ErrorHandlerActivity
|
import code.name.monkey.retromusic.ui.activities.bugreport.ErrorHandlerActivity
|
||||||
|
|
||||||
class TopExceptionHandler() : Thread.UncaughtExceptionHandler {
|
class TopExceptionHandler() : Thread.UncaughtExceptionHandler {
|
||||||
private val defaultUEH: Thread.UncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler()
|
private val defaultUEH: Thread.UncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler()
|
||||||
|
@ -11,6 +11,7 @@ class TopExceptionHandler() : Thread.UncaughtExceptionHandler {
|
||||||
override fun uncaughtException(t: Thread, e: Throwable) {
|
override fun uncaughtException(t: Thread, e: Throwable) {
|
||||||
var arr = e.stackTrace
|
var arr = e.stackTrace
|
||||||
var report = e.toString() + "\n\n"
|
var report = e.toString() + "\n\n"
|
||||||
|
|
||||||
report += "--------- Stack trace ---------\n\n"
|
report += "--------- Stack trace ---------\n\n"
|
||||||
for (i in arr.indices) {
|
for (i in arr.indices) {
|
||||||
report += " " + arr[i].toString() + "\n"
|
report += " " + arr[i].toString() + "\n"
|
||||||
|
|
|
@ -6,7 +6,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> {
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,13 @@ class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), Home
|
||||||
if (favoritePlaylist.isNotEmpty()) homes.add(Home(R.string.favorites, 0, favoritePlaylist, PLAYLISTS))
|
if (favoritePlaylist.isNotEmpty()) homes.add(Home(R.string.favorites, 0, favoritePlaylist, PLAYLISTS))
|
||||||
if (genres.isNotEmpty() && PreferenceUtil.getInstance().isGenreShown) homes.add(Home(R.string.genres, 0, genres, GENRES))
|
if (genres.isNotEmpty() && PreferenceUtil.getInstance().isGenreShown) homes.add(Home(R.string.genres, 0, genres, GENRES))
|
||||||
homes
|
homes
|
||||||
}).subscribe { homes ->
|
}).subscribe({ homes ->
|
||||||
if (homes.isNotEmpty()) {
|
if (homes.isNotEmpty()) {
|
||||||
view.showData(homes as ArrayList<Home>)
|
view.showData(homes as ArrayList<Home>)
|
||||||
}
|
}
|
||||||
}
|
}, {
|
||||||
|
view.showEmpty()
|
||||||
|
}, { })
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun subscribe() {
|
override fun subscribe() {
|
||||||
|
|
|
@ -2,11 +2,10 @@ package code.name.monkey.retromusic.preferences
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
|
import androidx.preference.DialogPreference
|
||||||
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference
|
|
||||||
|
|
||||||
|
|
||||||
class AlbumCoverStylePreference : ATEDialogPreference {
|
class AlbumCoverStylePreference : DialogPreference {
|
||||||
constructor(context: Context) : super(context)
|
constructor(context: Context) : super(context)
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
package code.name.monkey.retromusic.providers
|
||||||
|
|
||||||
|
import android.content.ContentValues
|
||||||
|
import android.content.Context
|
||||||
|
import android.database.sqlite.SQLiteDatabase
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper
|
||||||
|
import code.name.monkey.retromusic.loaders.SongLoader
|
||||||
|
import code.name.monkey.retromusic.model.Song
|
||||||
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
|
||||||
|
class NotPlayedStore(val context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, VERSION) {
|
||||||
|
|
||||||
|
private val dataBaseCreate = "CREATE TABLE IF NOT EXISTS $NAME ( $ID LONG PRIMARY KEY )"
|
||||||
|
|
||||||
|
override fun onCreate(db: SQLiteDatabase) {
|
||||||
|
db.execSQL(dataBaseCreate)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||||
|
db.execSQL("DROP TABLE IF EXISTS $NAME")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeSong(id: Long) {
|
||||||
|
val db = writableDatabase
|
||||||
|
db.apply {
|
||||||
|
beginTransaction()
|
||||||
|
delete(NAME, "$ID = $id", null)
|
||||||
|
setTransactionSuccessful()
|
||||||
|
endTransaction()
|
||||||
|
close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun addAllSongs(songs: ArrayList<Song>) {
|
||||||
|
SongLoader.getAllSongs(context)
|
||||||
|
.map {
|
||||||
|
val database = writableDatabase;
|
||||||
|
database.apply {
|
||||||
|
val contentValues = ContentValues()
|
||||||
|
for (song in songs) {
|
||||||
|
contentValues.put(ID, song.id)
|
||||||
|
insert(NAME, null, contentValues)
|
||||||
|
}
|
||||||
|
setTransactionSuccessful()
|
||||||
|
endTransaction()
|
||||||
|
}
|
||||||
|
return@map true
|
||||||
|
}
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.subscribe()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val NAME = "not_played_songs"
|
||||||
|
const val ID = "song_id"
|
||||||
|
const val DATABASE_NAME = "not_played.db"
|
||||||
|
private const val VERSION = 1
|
||||||
|
private var sInstance: NotPlayedStore? = null
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
fun getInstance(context: Context): NotPlayedStore {
|
||||||
|
if (sInstance == null) {
|
||||||
|
sInstance = NotPlayedStore(context.applicationContext)
|
||||||
|
}
|
||||||
|
return sInstance!!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
package code.name.monkey.retromusic.ui.activities
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_error_handler.*
class ErrorHandlerActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(code.name.monkey.retromusic.R.layout.activity_error_handler)
clearAppData.setOnClickListener {
try {
val intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:$packageName")
startActivity(intent)
} catch (e: ActivityNotFoundException) {
val intent = Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
startActivity(intent)
}
}
sendCrashLog.setOnClickListener {
val sendIntent = Intent(Intent.ACTION_SEND)
val subject = "Error report"
val body = intent.getStringExtra("error")
sendIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf("monkeycodeapp@gmail.com"))
sendIntent.putExtra(Intent.EXTRA_TEXT, body)
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
sendIntent.type = "message/rfc822"
startActivity(Intent.createChooser(sendIntent, "Send crash log"))
deleteFile("stack.trace")
}
showCrashError.text = String.format("%s", intent.getStringExtra("error"))
}
}
|
|
|
@ -40,7 +40,7 @@ class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
|
||||||
appBarLayout.setBackgroundColor(primaryColor)
|
appBarLayout.setBackgroundColor(primaryColor)
|
||||||
|
|
||||||
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp)
|
toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp)
|
||||||
toolbar.setNavigationOnClickListener { v -> onBackPressed() }
|
toolbar.setNavigationOnClickListener { onBackPressed() }
|
||||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(this))
|
bannerTitle.setTextColor(ThemeStore.textColorPrimary(this))
|
||||||
setSupportActionBar(toolbar)
|
setSupportActionBar(toolbar)
|
||||||
title = null
|
title = null
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class WhatsNewActivity extends AbsBaseActivity {
|
||||||
setTitle(null);
|
setTitle(null);
|
||||||
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
toolbar.setNavigationOnClickListener(v -> onBackPressed());
|
||||||
title.setTextColor(ThemeStore.Companion.textColorPrimary(this));
|
title.setTextColor(ThemeStore.Companion.textColorPrimary(this));
|
||||||
ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.Companion.accentColor(this));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Load from phonograph-changelog.html in the assets folder
|
// Load from phonograph-changelog.html in the assets folder
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
package code.name.monkey.retromusic.ui.activities.bugreport
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.ui.activities.bugreport.model.DeviceInfo
import kotlinx.android.synthetic.main.activity_error_handler.*
class ErrorHandlerActivity : AppCompatActivity() {
private var deviceInfo: DeviceInfo? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_error_handler)
deviceInfo = DeviceInfo(this)
clearAppData.setOnClickListener {
try {
val intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:$packageName")
startActivity(intent)
} catch (e: ActivityNotFoundException) {
val intent = Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
startActivity(intent)
}
}
sendCrashLog.setOnClickListener {
val sendIntent = Intent(Intent.ACTION_SEND)
val subject = "Error report"
val body = intent.getStringExtra("error") + "\n" + deviceInfo!!.toString()
sendIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf("monkeycodeapp@gmail.com"))
sendIntent.putExtra(Intent.EXTRA_TEXT, body)
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
sendIntent.type = "message/rfc822"
startActivity(Intent.createChooser(sendIntent, "Send crash log"))
deleteFile("stack.trace")
}
showCrashError.text = String.format("%s", intent.getStringExtra("error"))
showCrashError.append(deviceInfo!!.toString())
}
}
|
|
@ -1,7 +1,6 @@
|
||||||
package code.name.monkey.retromusic.ui.fragments
|
package code.name.monkey.retromusic.ui.fragments
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.ColorStateList
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
|
@ -11,8 +10,8 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.transition.TransitionManager
|
|
||||||
import code.name.monkey.appthemehelper.ThemeStore
|
import code.name.monkey.appthemehelper.ThemeStore
|
||||||
|
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
|
||||||
|
@ -34,7 +33,7 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setTintable(ThemeStore.textColorSecondary(context!!))
|
TintHelper.setTintAuto(volumeSeekBar, ThemeStore.textColorPrimary(context!!), false)
|
||||||
volumeDown.setOnClickListener(this)
|
volumeDown.setOnClickListener(this)
|
||||||
volumeUp.setOnClickListener(this)
|
volumeUp.setOnClickListener(this)
|
||||||
}
|
}
|
||||||
|
@ -101,9 +100,10 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
||||||
|
|
||||||
private fun setProgressBarColor(newColor: Int) {
|
private fun setProgressBarColor(newColor: Int) {
|
||||||
|
|
||||||
volumeSeekBar.thumbTintList = ColorStateList.valueOf(newColor)
|
//volumeSeekBar.thumbTintList = ColorStateList.valueOf(newColor)
|
||||||
volumeSeekBar.progressTintList = ColorStateList.valueOf(newColor)
|
//volumeSeekBar.progressTintList = ColorStateList.valueOf(newColor)
|
||||||
volumeSeekBar.progressBackgroundTintList = ColorStateList.valueOf(newColor)
|
//volumeSeekBar.progressBackgroundTintList = ColorStateList.valueOf(newColor)
|
||||||
|
TintHelper.setTintAuto(volumeSeekBar, newColor, false)
|
||||||
volumeDown.setColorFilter(newColor, PorterDuff.Mode.SRC_IN)
|
volumeDown.setColorFilter(newColor, PorterDuff.Mode.SRC_IN)
|
||||||
volumeUp.setColorFilter(newColor, PorterDuff.Mode.SRC_IN)
|
volumeUp.setColorFilter(newColor, PorterDuff.Mode.SRC_IN)
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
private MaterialCab cab;
|
private MaterialCab cab;
|
||||||
private FragmentManager fragmentManager;
|
private FragmentManager fragmentManager;
|
||||||
private ImageView userImage;
|
private ImageView userImage;
|
||||||
private CompositeDisposable disposable = new CompositeDisposable();
|
private CompositeDisposable disposable ;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
|
@ -94,12 +94,14 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||||
@Nullable Bundle savedInstanceState) {
|
@Nullable Bundle savedInstanceState) {
|
||||||
View view = inflater.inflate(R.layout.fragment_library, container, false);
|
View view = inflater.inflate(R.layout.fragment_library, container, false);
|
||||||
|
disposable = new CompositeDisposable();
|
||||||
contentContainer = view.findViewById(R.id.fragmentContainer);
|
contentContainer = view.findViewById(R.id.fragmentContainer);
|
||||||
bannerTitle = view.findViewById(R.id.bannerTitle);
|
bannerTitle = view.findViewById(R.id.bannerTitle);
|
||||||
appBarLayout = view.findViewById(R.id.appBarLayout);
|
appBarLayout = view.findViewById(R.id.appBarLayout);
|
||||||
toolbar = view.findViewById(R.id.toolbar);
|
toolbar = view.findViewById(R.id.toolbar);
|
||||||
userImage = view.findViewById(R.id.userImage);
|
userImage = view.findViewById(R.id.userImage);
|
||||||
userImage.setOnClickListener(v -> showMainMenu());
|
userImage.setOnClickListener(v -> showMainMenu());
|
||||||
|
|
||||||
loadImageFromStorage();
|
loadImageFromStorage();
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,11 @@ import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView {
|
class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks, HomeContract.HomeView {
|
||||||
|
override fun showEmpty() {
|
||||||
|
|
||||||
val disposable: CompositeDisposable = CompositeDisposable()
|
}
|
||||||
|
|
||||||
|
private lateinit var disposable: CompositeDisposable
|
||||||
private lateinit var homePresenter: HomePresenter
|
private lateinit var homePresenter: HomePresenter
|
||||||
private lateinit var contentContainerView: View
|
private lateinit var contentContainerView: View
|
||||||
private lateinit var lastAdded: View
|
private lateinit var lastAdded: View
|
||||||
|
@ -111,7 +114,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe({
|
.subscribe({
|
||||||
imageView.setImageBitmap(it)
|
if (it != null) {
|
||||||
|
imageView.setImageBitmap(it)
|
||||||
|
} else {
|
||||||
|
imageView.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
|
||||||
|
}
|
||||||
}) {
|
}) {
|
||||||
imageView.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
|
imageView.setImageDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_person_flat))
|
||||||
})
|
})
|
||||||
|
@ -132,22 +139,22 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
|
|
||||||
lastAdded = view.findViewById(R.id.lastAdded)
|
lastAdded = view.findViewById(R.id.lastAdded)
|
||||||
lastAdded.setOnClickListener {
|
lastAdded.setOnClickListener {
|
||||||
NavigationUtil.goToPlaylistNew(activity!!, LastAddedPlaylist(activity!!))
|
NavigationUtil.goToPlaylistNew(mainActivity, LastAddedPlaylist(mainActivity))
|
||||||
}
|
}
|
||||||
|
|
||||||
topPlayed = view.findViewById(R.id.topPlayed)
|
topPlayed = view.findViewById(R.id.topPlayed)
|
||||||
topPlayed.setOnClickListener {
|
topPlayed.setOnClickListener {
|
||||||
NavigationUtil.goToPlaylistNew(activity!!, MyTopTracksPlaylist(activity!!))
|
NavigationUtil.goToPlaylistNew(mainActivity, MyTopTracksPlaylist(mainActivity))
|
||||||
}
|
}
|
||||||
|
|
||||||
actionShuffle = view.findViewById(R.id.actionShuffle)
|
actionShuffle = view.findViewById(R.id.actionShuffle)
|
||||||
actionShuffle.setOnClickListener {
|
actionShuffle.setOnClickListener {
|
||||||
MusicPlayerRemote.openAndShuffleQueue(SongLoader.getAllSongs(activity!!).blockingFirst(), true)
|
MusicPlayerRemote.openAndShuffleQueue(SongLoader.getAllSongs(mainActivity).blockingFirst(), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
history = view.findViewById(R.id.history)
|
history = view.findViewById(R.id.history)
|
||||||
history.setOnClickListener {
|
history.setOnClickListener {
|
||||||
NavigationUtil.goToPlaylistNew(activity!!, HistoryPlaylist(activity!!))
|
NavigationUtil.goToPlaylistNew(mainActivity, HistoryPlaylist(mainActivity))
|
||||||
}
|
}
|
||||||
|
|
||||||
userImage = view.findViewById(R.id.userImage)
|
userImage = view.findViewById(R.id.userImage)
|
||||||
|
@ -163,9 +170,6 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
setupToolbar()
|
setupToolbar()
|
||||||
homePresenter.subscribe()
|
homePresenter.subscribe()
|
||||||
|
|
||||||
loadImageFromStorage(userImage)
|
|
||||||
getTimeOfTheDay()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupToolbar() {
|
private fun setupToolbar() {
|
||||||
|
@ -179,6 +183,13 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
disposable = CompositeDisposable()
|
||||||
|
loadImageFromStorage(userImage)
|
||||||
|
getTimeOfTheDay()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
disposable.dispose()
|
disposable.dispose()
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
|
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.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
|
@ -20,6 +21,7 @@ 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.ui.fragments.base.AbsPlayerControlsFragment
|
import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment
|
||||||
import code.name.monkey.retromusic.util.MusicUtil
|
import code.name.monkey.retromusic.util.MusicUtil
|
||||||
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.*
|
import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.*
|
||||||
|
|
||||||
class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() {
|
class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
|
@ -94,9 +96,14 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
updatePlayPauseColor()
|
updatePlayPauseColor()
|
||||||
|
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(color)), false)
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
TintHelper.setTintAuto(playPauseButton, color, true)
|
color
|
||||||
TintHelper.setTintAuto(progressSlider, color, false)
|
} else {
|
||||||
|
ThemeStore.accentColor(context!!)
|
||||||
|
}
|
||||||
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
|
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
||||||
|
TintHelper.setTintAuto(progressSlider, colorFinal, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updatePlayPauseColor() {
|
private fun updatePlayPauseColor() {
|
||||||
|
|
|
@ -2,8 +2,6 @@ package code.name.monkey.retromusic.ui.fragments.player.fit
|
||||||
|
|
||||||
import android.animation.ObjectAnimator
|
import android.animation.ObjectAnimator
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.graphics.drawable.ClipDrawable
|
|
||||||
import android.graphics.drawable.LayerDrawable
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@ -29,7 +27,6 @@ import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import kotlinx.android.synthetic.main.fragment_player_playback_controls.*
|
import kotlinx.android.synthetic.main.fragment_player_playback_controls.*
|
||||||
import kotlinx.android.synthetic.main.media_button.*
|
import kotlinx.android.synthetic.main.media_button.*
|
||||||
import kotlinx.android.synthetic.main.player_time.*
|
import kotlinx.android.synthetic.main.player_time.*
|
||||||
import kotlinx.android.synthetic.main.volume_controls.*
|
|
||||||
|
|
||||||
class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
|
|
||||||
|
@ -112,12 +109,12 @@ class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(activity, false)
|
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(activity, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
setFabColor(color)
|
color
|
||||||
} else {
|
} else {
|
||||||
setFabColor(ThemeStore.accentColor(context!!))
|
ThemeStore.accentColor(context!!)
|
||||||
}
|
}
|
||||||
|
setFabColor(colorFinal)
|
||||||
updateRepeatState()
|
updateRepeatState()
|
||||||
updateShuffleState()
|
updateShuffleState()
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
|
@ -126,7 +123,6 @@ class FitPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
private fun setFabColor(i: Int) {
|
private fun setFabColor(i: Int) {
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(i)), false)
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(i)), false)
|
||||||
TintHelper.setTintAuto(playPauseButton, i, true)
|
TintHelper.setTintAuto(playPauseButton, i, true)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpPlayPauseFab() {
|
private fun setUpPlayPauseFab() {
|
||||||
|
|
|
@ -104,11 +104,15 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback {
|
||||||
lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(activity, false)
|
lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(activity, false)
|
||||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(activity, false)
|
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(activity, false)
|
||||||
}
|
}
|
||||||
val accentColor = ThemeStore.accentColor(context!!)
|
|
||||||
val b = PreferenceUtil.getInstance().adaptiveColor
|
|
||||||
updateTextColors(if (b) color else accentColor)
|
|
||||||
setProgressBarColor(if (b) color else accentColor)
|
|
||||||
|
|
||||||
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
|
color
|
||||||
|
} else {
|
||||||
|
ThemeStore.accentColor(context!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
updateTextColors(colorFinal)
|
||||||
|
setProgressBarColor(colorFinal)
|
||||||
|
|
||||||
updateRepeatState()
|
updateRepeatState()
|
||||||
updateShuffleState()
|
updateShuffleState()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package code.name.monkey.retromusic.ui.fragments.player.material
|
package code.name.monkey.retromusic.ui.fragments.player.material
|
||||||
|
|
||||||
import android.animation.ObjectAnimator
|
import android.animation.ObjectAnimator
|
||||||
import android.content.res.ColorStateList
|
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -9,9 +8,11 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
|
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.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
|
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.helper.MusicProgressViewUpdateHelper
|
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
||||||
|
@ -22,7 +23,6 @@ import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment
|
||||||
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 kotlinx.android.synthetic.main.fragment_material_playback_controls.*
|
import kotlinx.android.synthetic.main.fragment_material_playback_controls.*
|
||||||
import kotlinx.android.synthetic.main.fragment_volume.*
|
|
||||||
import kotlinx.android.synthetic.main.player_time.*
|
import kotlinx.android.synthetic.main.player_time.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -104,15 +104,17 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() {
|
||||||
updateRepeatState()
|
updateRepeatState()
|
||||||
updateShuffleState()
|
updateShuffleState()
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance().adaptiveColor) {
|
|
||||||
lastPlaybackControlsColor = color
|
|
||||||
text.setTextColor(color)
|
|
||||||
|
|
||||||
progressSlider.thumbTintList = ColorStateList.valueOf(color)
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
progressSlider.progressTintList = ColorStateList.valueOf(color)
|
color
|
||||||
progressSlider.progressBackgroundTintList = ColorStateList.valueOf(color)
|
} else {
|
||||||
|
ThemeStore.accentColor(context!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastPlaybackControlsColor = colorFinal
|
||||||
|
text.setTextColor(colorFinal)
|
||||||
|
TintHelper.setTintAuto(progressSlider, colorFinal, false)
|
||||||
|
|
||||||
updatePlayPauseColor()
|
updatePlayPauseColor()
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import android.view.animation.AccelerateInterpolator
|
||||||
import android.view.animation.DecelerateInterpolator
|
import android.view.animation.DecelerateInterpolator
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
|
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.appthemehelper.util.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
|
@ -126,11 +127,16 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(context!!, false)
|
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(context!!, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(color)), false)
|
color
|
||||||
TintHelper.setTintAuto(playPauseButton, color, true)
|
} else {
|
||||||
setProgressBarColor(color)
|
ThemeStore.accentColor(context!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
|
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
||||||
|
setProgressBarColor(colorFinal)
|
||||||
|
|
||||||
updateRepeatState()
|
updateRepeatState()
|
||||||
updateShuffleState()
|
updateShuffleState()
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
|
|
|
@ -188,14 +188,16 @@ class SimplePlaybackControlsFragment : AbsPlayerControlsFragment() {
|
||||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(context!!, false)
|
lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(context!!, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance().adaptiveColor) {
|
val colorFinal = if (PreferenceUtil.getInstance().adaptiveColor) {
|
||||||
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(color)), false)
|
color
|
||||||
TintHelper.setTintAuto(playPauseButton, color, true)
|
|
||||||
text.setTextColor(color)
|
|
||||||
} else {
|
} else {
|
||||||
text.setTextColor(ThemeStore.accentColor(context!!))
|
ThemeStore.accentColor(context!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(colorFinal)), false)
|
||||||
|
TintHelper.setTintAuto(playPauseButton, colorFinal, true)
|
||||||
|
text.setTextColor(colorFinal)
|
||||||
|
|
||||||
updateRepeatState()
|
updateRepeatState()
|
||||||
updateShuffleState()
|
updateShuffleState()
|
||||||
updatePrevNextColor()
|
updatePrevNextColor()
|
||||||
|
|
|
@ -37,7 +37,6 @@ object ViewUtil {
|
||||||
val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background)
|
val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background)
|
||||||
clipDrawableBackground.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(progressSlider.context, ColorUtil.isColorLight(ThemeStore.primaryColor(progressSlider.context))), PorterDuff.Mode.SRC_IN)
|
clipDrawableBackground.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(progressSlider.context, ColorUtil.isColorLight(ThemeStore.primaryColor(progressSlider.context))), PorterDuff.Mode.SRC_IN)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createColorAnimator(target: Any, propertyName: String, @ColorInt startColor: Int, @ColorInt endColor: Int): Animator {
|
private fun createColorAnimator(target: Any, propertyName: String, @ColorInt startColor: Int, @ColorInt endColor: Int): Animator {
|
||||||
|
|
BIN
app/src/main/res/drawable/flat_shadow.png
Normal file
BIN
app/src/main/res/drawable/flat_shadow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 423 B |
8
app/src/main/res/drawable/flat_shadow_thumb.xml
Normal file
8
app/src/main/res/drawable/flat_shadow_thumb.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<size
|
||||||
|
android:width="16dp"
|
||||||
|
android:height="16dp" />
|
||||||
|
<solid android:color="@color/md_white_1000" />
|
||||||
|
</shape>
|
8
app/src/main/res/drawable/switch_square.xml
Normal file
8
app/src/main/res/drawable/switch_square.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<size
|
||||||
|
android:width="16dp"
|
||||||
|
android:height="16dp" />
|
||||||
|
<solid android:color="@color/md_white_1000" />
|
||||||
|
</shape>
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:drawable="@drawable/abc_btn_switch_to_on_mtrl_00012" android:state_checked="true"/>
|
<item android:drawable="@drawable/abc_btn_switch_to_on_mtrl_00012" android:state_checked="true" />
|
||||||
<item android:drawable="@drawable/abc_btn_switch_to_on_mtrl_00001"/>
|
<item android:drawable="@drawable/abc_btn_switch_to_on_mtrl_00001" />
|
||||||
</selector>
|
</selector>
|
||||||
|
|
|
@ -1,35 +1,42 @@
|
||||||
<?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:tools="http://schemas.android.com/tools"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="8dp">
|
android:padding="8dp">
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATEPrimaryTextView
|
<code.name.monkey.appthemehelper.common.views.ATEPrimaryTextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/dialogTitle"
|
||||||
android:textStyle="bold"
|
style="@style/SubTitleTextAppearance"
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:padding="6dp"
|
|
||||||
android:text="@string/what_do_you_want_to_share"
|
android:text="@string/what_do_you_want_to_share"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Title"
|
android:textStyle="bold" />
|
||||||
tools:ignore="MissingPrefix" />
|
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/audioText"
|
android:id="@+id/audioText"
|
||||||
|
style="@style/Widget.MaterialComponents.Button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="12dp"
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:gravity="start|center_vertical"
|
||||||
|
android:paddingTop="14dp"
|
||||||
|
android:paddingBottom="14dp"
|
||||||
android:text="@string/the_audio_file"
|
android:text="@string/the_audio_file"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
|
android:textAllCaps="false" />
|
||||||
|
|
||||||
<code.name.monkey.appthemehelper.common.views.ATESecondaryTextView
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/audioFile"
|
android:id="@+id/audioFile"
|
||||||
android:layout_width="wrap_content"
|
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="12dp"
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:gravity="start|center_vertical"
|
||||||
|
android:paddingTop="14dp"
|
||||||
|
android:paddingBottom="14dp"
|
||||||
android:text="@string/the_audio_file"
|
android:text="@string/the_audio_file"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
|
android:textAllCaps="false"
|
||||||
|
app:strokeWidth="2dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -30,7 +30,7 @@
|
||||||
android:textAppearance="?android:textAppearanceLarge" />
|
android:textAppearance="?android:textAppearanceLarge" />
|
||||||
|
|
||||||
|
|
||||||
<SeekBar
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/seekBar"
|
android:id="@+id/seekBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
@ -14,8 +14,10 @@
|
||||||
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:paddingEnd="24dp"
|
android:maxHeight="3dp"
|
||||||
android:paddingStart="24dp"
|
android:paddingStart="24dp"
|
||||||
|
android:paddingEnd="24dp"
|
||||||
|
android:progressDrawable="@drawable/color_progress_seek"
|
||||||
tools:progress="20" />
|
tools:progress="20" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -23,8 +25,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingEnd="16dp"
|
android:paddingStart="16dp"
|
||||||
android:paddingStart="16dp">
|
android:paddingEnd="16dp">
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -32,8 +34,8 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
@ -45,8 +47,8 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
|
@ -57,11 +59,11 @@
|
||||||
android:id="@+id/playerMediaControllerContainer"
|
android:id="@+id/playerMediaControllerContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:layoutDirection="ltr"
|
android:layoutDirection="ltr"
|
||||||
android:paddingEnd="4dp"
|
|
||||||
android:paddingStart="4dp"
|
android:paddingStart="4dp"
|
||||||
android:layout_marginBottom="8dp"
|
android:paddingEnd="4dp"
|
||||||
tools:ignore="ContentDescription,UnusedAttribute">
|
tools:ignore="ContentDescription,UnusedAttribute">
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
|
@ -142,8 +144,8 @@
|
||||||
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:paddingEnd="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingStart="8dp">
|
android:paddingEnd="8dp">
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/volumeFragment"
|
android:id="@+id/volumeFragment"
|
||||||
|
|
|
@ -59,10 +59,11 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="20dp"
|
android:paddingStart="20dp"
|
||||||
|
android:maxHeight="3dp"
|
||||||
android:paddingEnd="20dp"
|
android:paddingEnd="20dp"
|
||||||
|
android:progressDrawable="@drawable/color_progress_seek"
|
||||||
android:progressTint="@color/md_white_1000"
|
android:progressTint="@color/md_white_1000"
|
||||||
android:splitTrack="false"
|
android:splitTrack="false"
|
||||||
android:thumb="@null"
|
|
||||||
android:thumbTint="@color/md_white_1000"
|
android:thumbTint="@color/md_white_1000"
|
||||||
tools:progress="20" />
|
tools:progress="20" />
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,8 @@
|
||||||
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:maxHeight="3dp"
|
|
||||||
android:progressDrawable="@drawable/color_progress_seek"
|
|
||||||
android:splitTrack="false"
|
android:splitTrack="false"
|
||||||
android:thumb="@drawable/switch_thumb_material"
|
android:thumb="@drawable/flat_shadow_thumb"
|
||||||
tools:ignore="RtlHardcoded,UnusedAttribute" />
|
tools:ignore="RtlHardcoded,UnusedAttribute" />
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:maxHeight="3dp"
|
android:maxHeight="3dp"
|
||||||
|
android:progressDrawable="@drawable/color_progress_seek"
|
||||||
android:paddingStart="24dp"
|
android:paddingStart="24dp"
|
||||||
android:paddingEnd="24dp"
|
android:paddingEnd="24dp"
|
||||||
tools:progress="20" />
|
tools:progress="20" />
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
android:id="@+id/volumeSeekBar"
|
android:id="@+id/volumeSeekBar"
|
||||||
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"
|
||||||
|
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"
|
||||||
|
|
|
@ -134,10 +134,6 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="ErrorHandlingTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
|
<style name="ErrorHandlingTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
|
||||||
<item name="colorPrimary">@color/md_white_1000</item>
|
|
||||||
<item name="colorPrimaryDark">@color/md_white_1000</item>
|
|
||||||
<item name="android:windowLightStatusBar">true</item>
|
|
||||||
<item name="android:windowLightNavigationBar">true</item>
|
|
||||||
<item name="android:windowBackground">@color/md_white_1000</item>
|
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATECheckBoxPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATECheckBoxPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEColorPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEColorPreference.kt
Executable file → Normal file
1
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEDialogPreference.kt
Executable file → Normal file
1
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEDialogPreference.kt
Executable file → Normal file
|
@ -3,6 +3,7 @@ package code.name.monkey.appthemehelper.common.prefs
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import code.name.monkey.appthemehelper.R
|
import code.name.monkey.appthemehelper.R
|
||||||
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.prefs.MaterialDialogPreference
|
import com.afollestad.materialdialogs.prefs.MaterialDialogPreference
|
||||||
|
|
||||||
|
|
||||||
|
|
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEEditTextPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEEditTextPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEListPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEListPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEMultiSelectPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEMultiSelectPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEPreferenceCategory.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATEPreferenceCategory.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATESwitchPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/ATESwitchPreference.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATEPreferenceFragmentCompat.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATEPreferenceFragmentCompat.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt
Executable file → Normal file
0
appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt
Executable file → Normal file
|
@ -1,7 +1,7 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.3.11'
|
ext.kotlin_version = '1.3.21'
|
||||||
ext {
|
ext {
|
||||||
supportLibVersion = '1.0.0'
|
supportLibVersion = '1.0.0'
|
||||||
firebase = "11.8.0"
|
firebase = "11.8.0"
|
||||||
|
@ -13,7 +13,7 @@ buildscript {
|
||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.3.0'
|
classpath 'com.android.tools.build:gradle:3.3.1'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue