mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2026-05-10 17:13:02 -04:00
116 lines
3.8 KiB
Kotlin
116 lines
3.8 KiB
Kotlin
package protect.card_locker
|
|
|
|
import android.graphics.Color
|
|
import android.graphics.Typeface
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import android.view.View
|
|
import android.widget.FrameLayout
|
|
import android.widget.LinearLayout
|
|
import androidx.appcompat.widget.AppCompatImageView
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.core.graphics.ColorUtils
|
|
import androidx.core.view.WindowInsetsControllerCompat
|
|
import androidx.core.view.children
|
|
import com.google.android.material.color.MaterialColors
|
|
import com.google.android.material.textview.MaterialTextView
|
|
import com.yalantis.ucrop.UCropActivity
|
|
|
|
class UCropWrapper : UCropActivity() {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
|
|
Utils.applyWindowInsets(findViewById(android.R.id.content))
|
|
}
|
|
|
|
override fun onPostCreate(savedInstanceState: Bundle?) {
|
|
super.onPostCreate(savedInstanceState)
|
|
val darkMode = Utils.isDarkModeEnabled(this)
|
|
// setup status bar to look like the rest of the app
|
|
setupStatusBar(darkMode)
|
|
// find and check views that we wish to color modify
|
|
// for when we update ucrop or switch to another cropper
|
|
checkViews(darkMode)
|
|
// change toolbar font
|
|
changeToolbarFont()
|
|
}
|
|
|
|
private fun setupStatusBar(darkMode: Boolean) {
|
|
if (window == null) {
|
|
return
|
|
}
|
|
|
|
val decorView = window.decorView
|
|
val wic = WindowInsetsControllerCompat(window, decorView)
|
|
wic.isAppearanceLightStatusBars = !darkMode
|
|
}
|
|
|
|
private fun checkViews(darkMode: Boolean) {
|
|
var view = findViewById<View?>(com.yalantis.ucrop.R.id.wrapper_controls)
|
|
if (view !is FrameLayout) {
|
|
return
|
|
}
|
|
|
|
val controls = view
|
|
view = findViewById(com.yalantis.ucrop.R.id.wrapper_states)
|
|
if (view !is LinearLayout) {
|
|
return
|
|
}
|
|
val states = view
|
|
controls.children.firstOrNull { it is AppCompatImageView }?.let {
|
|
// everything gathered and are as expected, now perform color patching
|
|
Utils.patchColors(this)
|
|
val colorSurface = MaterialColors.getColor(
|
|
this,
|
|
com.google.android.material.R.attr.colorSurface,
|
|
ContextCompat.getColor(
|
|
this,
|
|
R.color.md_theme_light_surface
|
|
)
|
|
)
|
|
val colorOnSurface = MaterialColors.getColor(
|
|
this,
|
|
com.google.android.material.R.attr.colorOnSurface,
|
|
ContextCompat.getColor(
|
|
this,
|
|
R.color.md_theme_light_onSurface
|
|
)
|
|
)
|
|
|
|
val controlsBackgroundImageDrawable = it.background
|
|
controlsBackgroundImageDrawable.mutate()
|
|
controlsBackgroundImageDrawable.setTint(
|
|
if (darkMode) {
|
|
colorOnSurface
|
|
} else {
|
|
colorSurface
|
|
}
|
|
)
|
|
it.background = controlsBackgroundImageDrawable
|
|
states.setBackgroundColor(
|
|
if (darkMode) {
|
|
colorSurface
|
|
} else {
|
|
colorOnSurface
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
private fun changeToolbarFont() {
|
|
val toolbar = findViewById<View?>(com.yalantis.ucrop.R.id.toolbar_title)
|
|
if (toolbar !is MaterialTextView) {
|
|
return
|
|
}
|
|
|
|
val style = intent.getIntExtra(UCROP_TOOLBAR_TYPEFACE_STYLE, -1)
|
|
if (style != -1) {
|
|
toolbar.setTypeface(Typeface.defaultFromStyle(style))
|
|
}
|
|
}
|
|
|
|
internal companion object {
|
|
const val UCROP_TOOLBAR_TYPEFACE_STYLE: String = "ucop_toolbar_typeface_style"
|
|
}
|
|
}
|