2020-07-17 16:35:39 +02:00
|
|
|
package sushi.hardcore.droidfs.widgets
|
|
|
|
|
|
|
|
import android.content.Context
|
2020-09-04 13:30:12 +02:00
|
|
|
import android.view.WindowManager
|
2021-09-05 15:00:16 +02:00
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
import androidx.core.view.WindowInsetsCompat
|
|
|
|
import androidx.core.view.WindowInsetsControllerCompat
|
2020-07-17 16:35:39 +02:00
|
|
|
|
2020-07-27 16:20:52 +02:00
|
|
|
class ColoredAlertDialogBuilder: AlertDialog.Builder {
|
|
|
|
constructor(context: Context): super(context)
|
|
|
|
constructor(context: Context, themeResId: Int): super(context, themeResId)
|
2020-09-04 13:30:12 +02:00
|
|
|
|
|
|
|
private var keepFullScreen = false
|
|
|
|
|
|
|
|
fun keepFullScreen(): AlertDialog.Builder {
|
|
|
|
keepFullScreen = true
|
|
|
|
return this
|
|
|
|
}
|
|
|
|
|
2020-07-17 16:35:39 +02:00
|
|
|
private fun applyColor(dialog: AlertDialog){
|
|
|
|
dialog.setOnShowListener{
|
|
|
|
val themeColor = ThemeColor.getThemeColor(context)
|
|
|
|
for (i in listOf(AlertDialog.BUTTON_POSITIVE, AlertDialog.BUTTON_NEGATIVE, AlertDialog.BUTTON_NEUTRAL)){
|
|
|
|
dialog.getButton(i).setTextColor(themeColor)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-09-04 13:30:12 +02:00
|
|
|
|
|
|
|
override fun show(): AlertDialog {
|
|
|
|
val dialog = create()
|
2020-07-17 16:35:39 +02:00
|
|
|
dialog.show()
|
2020-09-30 16:19:16 +02:00
|
|
|
if (keepFullScreen){
|
2021-09-05 15:00:16 +02:00
|
|
|
dialog.window?.let {
|
|
|
|
WindowInsetsControllerCompat(it, it.decorView)
|
|
|
|
.hide(WindowInsetsCompat.Type.statusBars())
|
|
|
|
it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
|
|
|
}
|
2020-09-30 16:19:16 +02:00
|
|
|
}
|
2020-09-04 13:30:12 +02:00
|
|
|
return dialog
|
2020-07-17 16:35:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun create(): AlertDialog {
|
|
|
|
val dialog = super.create()
|
|
|
|
applyColor(dialog)
|
2020-09-04 13:30:12 +02:00
|
|
|
if (keepFullScreen){
|
|
|
|
dialog.window?.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
|
|
|
}
|
2020-07-17 16:35:39 +02:00
|
|
|
return dialog
|
|
|
|
}
|
|
|
|
}
|