V5 Push
Here's a list of changes/features: https://github.com/RetroMusicPlayer/RetroMusicPlayer/releases/tag/v5.0 Internal Changes: 1) Migrated to ViewBinding 2) Migrated to Glide V4 3) Migrated to kotlin version of Material Dialogs
This commit is contained in:
parent
fc42767031
commit
bce6dbfa27
421 changed files with 13285 additions and 5757 deletions
|
@ -1,20 +1,17 @@
|
|||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
@ -26,13 +23,10 @@ android {
|
|||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
implementation 'com.google.android.material:material:1.3.0-alpha04'
|
||||
implementation 'androidx.appcompat:appcompat:1.3.1'
|
||||
implementation 'com.google.android.material:material:1.4.0'
|
||||
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
// Used for the list preference classes
|
||||
def material_dialog_version = "0.9.6.0"
|
||||
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
|
||||
implementation "com.afollestad.material-dialogs:commons:$material_dialog_version"
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package code.name.monkey.appthemehelper
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.*
|
||||
import androidx.annotation.IntRange
|
||||
import androidx.core.content.ContextCompat
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
|
||||
|
@ -15,14 +14,10 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
|||
/**
|
||||
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
class ThemeStore @SuppressLint("CommitPrefEdits")
|
||||
class ThemeStore
|
||||
private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeStoreInterface {
|
||||
|
||||
private val mEditor: SharedPreferences.Editor
|
||||
|
||||
init {
|
||||
mEditor = prefs(mContext).edit()
|
||||
}
|
||||
private val mEditor: SharedPreferences.Editor = prefs(mContext).edit()
|
||||
|
||||
override fun activityTheme(@StyleRes theme: Int): ThemeStore {
|
||||
mEditor.putInt(ThemeStorePrefKeys.KEY_ACTIVITY_THEME, theme)
|
||||
|
@ -41,7 +36,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun primaryColorAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return primaryColor(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return primaryColor(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun primaryColorDark(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -54,7 +49,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun primaryColorDarkAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return primaryColorDark(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return primaryColorDark(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun accentColor(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -67,7 +62,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun accentColorAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return accentColor(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return accentColor(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun statusBarColor(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -80,7 +75,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun statusBarColorAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return statusBarColor(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return statusBarColor(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun navigationBarColor(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -97,7 +92,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
// Static getters
|
||||
|
||||
override fun navigationBarColorAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return navigationBarColor(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return navigationBarColor(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun textColorPrimary(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -110,7 +105,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun textColorPrimaryAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return textColorPrimary(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return textColorPrimary(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun textColorPrimaryInverse(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -123,7 +118,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun textColorPrimaryInverseAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return textColorPrimaryInverse(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return textColorPrimaryInverse(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun textColorSecondary(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -136,7 +131,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun textColorSecondaryAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return textColorSecondary(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return textColorSecondary(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun textColorSecondaryInverse(@ColorInt color: Int): ThemeStore {
|
||||
|
@ -149,7 +144,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
}
|
||||
|
||||
override fun textColorSecondaryInverseAttr(@AttrRes colorAttr: Int): ThemeStore {
|
||||
return textColorSecondaryInverse(ATHUtil.resolveColor(mContext, colorAttr))
|
||||
return textColorSecondaryInverse(resolveColor(mContext, colorAttr))
|
||||
}
|
||||
|
||||
override fun coloredStatusBar(colored: Boolean): ThemeStore {
|
||||
|
@ -202,7 +197,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
fun primaryColor(context: Context): Int {
|
||||
return prefs(context).getInt(
|
||||
ThemeStorePrefKeys.KEY_PRIMARY_COLOR,
|
||||
ATHUtil.resolveColor(context, R.attr.colorPrimary, Color.parseColor("#455A64"))
|
||||
resolveColor(context, R.attr.colorPrimary, Color.parseColor("#455A64"))
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -212,9 +207,9 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
val desaturatedColor = prefs(context).getBoolean("desaturated_color", false)
|
||||
val color = prefs(context).getInt(
|
||||
ThemeStorePrefKeys.KEY_ACCENT_COLOR,
|
||||
ATHUtil.resolveColor(context, R.attr.colorAccent, Color.parseColor("#263238"))
|
||||
resolveColor(context, R.attr.colorAccent, Color.parseColor("#263238"))
|
||||
)
|
||||
return if (ATHUtil.isWindowBackgroundDark(context) && desaturatedColor) ColorUtil.desaturateColor(
|
||||
return if (isWindowBackgroundDark(context) && desaturatedColor) ColorUtil.desaturateColor(
|
||||
color,
|
||||
0.4f
|
||||
) else color
|
||||
|
@ -290,7 +285,6 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
)
|
||||
}
|
||||
|
||||
@SuppressLint("CommitPrefEdits")
|
||||
fun isConfigured(
|
||||
context: Context, @IntRange(
|
||||
from = 0,
|
||||
|
@ -300,7 +294,7 @@ private constructor(private val mContext: Context) : ThemeStorePrefKeys, ThemeSt
|
|||
val prefs = prefs(context)
|
||||
val lastVersion = prefs.getInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, -1)
|
||||
if (version > lastVersion) {
|
||||
prefs.edit().putInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, version).commit()
|
||||
prefs.edit().putInt(ThemeStorePrefKeys.IS_CONFIGURED_VERSION_KEY, version).apply()
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
package code.name.monkey.appthemehelper.util
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.ColorStateList
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
|
||||
import com.afollestad.materialdialogs.internal.ThemeSingleton
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
object MaterialDialogsUtil {
|
||||
fun updateMaterialDialogsThemeSingleton(context: Context) {
|
||||
val md = ThemeSingleton.get()
|
||||
md.titleColor = ThemeStore.textColorPrimary(context)
|
||||
md.contentColor = ThemeStore.textColorSecondary(context)
|
||||
md.itemColor = md.titleColor
|
||||
md.widgetColor = ThemeStore.accentColor(context)
|
||||
md.linkColor = ColorStateList.valueOf(md.widgetColor)
|
||||
md.positiveColor = ColorStateList.valueOf(md.widgetColor)
|
||||
md.neutralColor = ColorStateList.valueOf(md.widgetColor)
|
||||
md.negativeColor = ColorStateList.valueOf(md.widgetColor)
|
||||
md.darkTheme = isWindowBackgroundDark(context)
|
||||
}
|
||||
}
|
|
@ -238,13 +238,13 @@ public final class ToolbarContentTintHelper {
|
|||
|
||||
private static class ATHMenuPresenterCallback implements MenuPresenter.Callback {
|
||||
|
||||
private int mColor;
|
||||
private final int mColor;
|
||||
|
||||
private Context mContext;
|
||||
private final Context mContext;
|
||||
|
||||
private MenuPresenter.Callback mParentCb;
|
||||
private final MenuPresenter.Callback mParentCb;
|
||||
|
||||
private Toolbar mToolbar;
|
||||
private final Toolbar mToolbar;
|
||||
|
||||
public ATHMenuPresenterCallback(Context context, final @ColorInt int color,
|
||||
MenuPresenter.Callback parentCb, Toolbar toolbar) {
|
||||
|
@ -270,13 +270,13 @@ public final class ToolbarContentTintHelper {
|
|||
|
||||
private static class ATHOnMenuItemClickListener implements Toolbar.OnMenuItemClickListener {
|
||||
|
||||
private int mColor;
|
||||
private final int mColor;
|
||||
|
||||
private Context mContext;
|
||||
private final Context mContext;
|
||||
|
||||
private Toolbar.OnMenuItemClickListener mParentListener;
|
||||
private final Toolbar.OnMenuItemClickListener mParentListener;
|
||||
|
||||
private Toolbar mToolbar;
|
||||
private final Toolbar mToolbar;
|
||||
|
||||
public ATHOnMenuItemClickListener(Context context, final @ColorInt int color,
|
||||
Toolbar.OnMenuItemClickListener parentCb, Toolbar toolbar) {
|
||||
|
@ -528,14 +528,14 @@ public final class ToolbarContentTintHelper {
|
|||
@CheckResult
|
||||
@ColorInt
|
||||
public static int toolbarSubtitleColor(@NonNull Context context, @ColorInt int toolbarColor) {
|
||||
return MaterialValueHelper.INSTANCE
|
||||
return MaterialValueHelper
|
||||
.getSecondaryTextColor(context, ColorUtil.INSTANCE.isColorLight(toolbarColor));
|
||||
}
|
||||
|
||||
@CheckResult
|
||||
@ColorInt
|
||||
public static int toolbarTitleColor(@NonNull Context context, @ColorInt int toolbarColor) {
|
||||
return MaterialValueHelper.INSTANCE
|
||||
return MaterialValueHelper
|
||||
.getPrimaryTextColor(context, ColorUtil.INSTANCE.isColorLight(toolbarColor));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue