8
8
*/
9
9
package com.nextcloud.android.common.sample
10
10
11
- import android.graphics.Color
12
11
import android.os.Bundle
13
12
import android.widget.Toast
13
+ import androidx.appcompat.app.AlertDialog
14
14
import androidx.appcompat.app.AppCompatActivity
15
+ import androidx.core.graphics.toColorInt
15
16
import androidx.lifecycle.ViewModelProvider
17
+ import com.google.android.material.button.MaterialButton
18
+ import com.google.android.material.dialog.MaterialAlertDialogBuilder
16
19
import com.nextcloud.android.common.sample.databinding.ActivityMainBinding
17
20
import com.nextcloud.android.common.ui.color.ColorUtil
18
21
import com.nextcloud.android.common.ui.theme.MaterialSchemes
19
22
import com.nextcloud.android.common.ui.theme.utils.AndroidViewThemeUtils
20
23
import com.nextcloud.android.common.ui.theme.utils.ColorRole
24
+ import com.nextcloud.android.common.ui.theme.utils.DialogViewThemeUtils
21
25
import com.nextcloud.android.common.ui.theme.utils.MaterialViewThemeUtils
22
26
23
27
class MainActivity : AppCompatActivity () {
@@ -34,7 +38,7 @@ class MainActivity : AppCompatActivity() {
34
38
// Color should be fetched from the server capabilities or another proper source
35
39
binding.btn.setOnClickListener { _ ->
36
40
try {
37
- mainViewModel.color.value = Color .parseColor( " #${binding.color.text} " )
41
+ mainViewModel.color.value = " #${binding.color.text} " .toColorInt( )
38
42
} catch (_: java.lang.IllegalArgumentException ) {
39
43
Toast
40
44
.makeText(
@@ -45,10 +49,39 @@ class MainActivity : AppCompatActivity() {
45
49
}
46
50
}
47
51
52
+ binding.dialogBtn.setOnClickListener { _ ->
53
+ // launch MaterialDialog
54
+ val builder =
55
+ MaterialAlertDialogBuilder (this )
56
+ .setPositiveButton(R .string.ok) { dialog, _ -> dialog.dismiss() }
57
+ .setNeutralButton(R .string.dismiss) { dialog, _ -> dialog.dismiss() }
58
+ .setNegativeButton(R .string.cancel) { dialog, _ -> dialog.dismiss() }
59
+ .setTitle(R .string.dialog_title)
60
+ .setMessage(getString(R .string.dialog_message))
61
+ val schemes = MaterialSchemes .Companion .fromColor(" #${binding.color.text} " .toColorInt())
62
+ val colorUtil = ColorUtil (this )
63
+ val dialogViewThemeUtils = DialogViewThemeUtils (schemes)
64
+ val material = MaterialViewThemeUtils (schemes, colorUtil)
65
+
66
+ dialogViewThemeUtils.colorMaterialAlertDialogBackground(this , builder)
67
+
68
+ val dialog = builder.create()
69
+ dialog.show()
70
+
71
+ val positiveButton = dialog.getButton(AlertDialog .BUTTON_POSITIVE ) as MaterialButton
72
+ material.colorMaterialButtonPrimaryTonal(positiveButton)
73
+
74
+ val neutralButton = dialog.getButton(AlertDialog .BUTTON_NEUTRAL ) as MaterialButton
75
+ material.colorMaterialButtonPrimaryOutlined(neutralButton)
76
+
77
+ val negativeButton = dialog.getButton(AlertDialog .BUTTON_NEGATIVE ) as MaterialButton
78
+ material.colorMaterialButtonPrimaryBorderless(negativeButton)
79
+ }
80
+
48
81
setSupportActionBar(binding.toolbar)
49
82
supportActionBar?.setDisplayHomeAsUpEnabled(true )
50
83
mainViewModel.color.observe(this ) { applyTheme(it) }
51
- applyTheme(Color .parseColor( " #${binding.color.text} " ))
84
+ applyTheme(" #${binding.color.text} " .toColorInt( ))
52
85
}
53
86
54
87
private fun applyTheme (color : Int ) {
@@ -76,5 +109,6 @@ class MainActivity : AppCompatActivity() {
76
109
material.themeChipInput(binding.inputChip)
77
110
material.themeChipSuggestion(binding.suggestionChip)
78
111
material.themeChipFilter(binding.filterChip)
112
+ material.colorMaterialButtonPrimaryFilled(binding.dialogBtn)
79
113
}
80
114
}
0 commit comments