Skip to content

Commit 71f0458

Browse files
Merge pull request #760 from nextcloud/feat/noid/AddDialogThemingExample
Add themed minimal alert dialog
2 parents 61e1295 + 6089dc8 commit 71f0458

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

sample/src/main/java/com/nextcloud/android/common/sample/MainActivity.kt

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,20 @@
88
*/
99
package com.nextcloud.android.common.sample
1010

11-
import android.graphics.Color
1211
import android.os.Bundle
1312
import android.widget.Toast
13+
import androidx.appcompat.app.AlertDialog
1414
import androidx.appcompat.app.AppCompatActivity
15+
import androidx.core.graphics.toColorInt
1516
import androidx.lifecycle.ViewModelProvider
17+
import com.google.android.material.button.MaterialButton
18+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
1619
import com.nextcloud.android.common.sample.databinding.ActivityMainBinding
1720
import com.nextcloud.android.common.ui.color.ColorUtil
1821
import com.nextcloud.android.common.ui.theme.MaterialSchemes
1922
import com.nextcloud.android.common.ui.theme.utils.AndroidViewThemeUtils
2023
import com.nextcloud.android.common.ui.theme.utils.ColorRole
24+
import com.nextcloud.android.common.ui.theme.utils.DialogViewThemeUtils
2125
import com.nextcloud.android.common.ui.theme.utils.MaterialViewThemeUtils
2226

2327
class MainActivity : AppCompatActivity() {
@@ -34,7 +38,7 @@ class MainActivity : AppCompatActivity() {
3438
// Color should be fetched from the server capabilities or another proper source
3539
binding.btn.setOnClickListener { _ ->
3640
try {
37-
mainViewModel.color.value = Color.parseColor("#${binding.color.text}")
41+
mainViewModel.color.value = "#${binding.color.text}".toColorInt()
3842
} catch (_: java.lang.IllegalArgumentException) {
3943
Toast
4044
.makeText(
@@ -45,10 +49,39 @@ class MainActivity : AppCompatActivity() {
4549
}
4650
}
4751

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+
4881
setSupportActionBar(binding.toolbar)
4982
supportActionBar?.setDisplayHomeAsUpEnabled(true)
5083
mainViewModel.color.observe(this) { applyTheme(it) }
51-
applyTheme(Color.parseColor("#${binding.color.text}"))
84+
applyTheme("#${binding.color.text}".toColorInt())
5285
}
5386

5487
private fun applyTheme(color: Int) {
@@ -76,5 +109,6 @@ class MainActivity : AppCompatActivity() {
76109
material.themeChipInput(binding.inputChip)
77110
material.themeChipSuggestion(binding.suggestionChip)
78111
material.themeChipFilter(binding.filterChip)
112+
material.colorMaterialButtonPrimaryFilled(binding.dialogBtn)
79113
}
80114
}

sample/src/main/res/layout/activity_main.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
android:id="@+id/color"
100100
android:layout_width="match_parent"
101101
android:layout_height="wrap_content"
102-
android:inputType="number"
102+
android:inputType="text"
103103
android:maxLength="6"
104104
android:text="0082C9"
105105
tools:ignore="HardcodedText" />
@@ -117,6 +117,7 @@
117117
app:layout_constraintStart_toEndOf="@+id/colorTil" />
118118

119119
<com.google.android.material.chip.ChipGroup
120+
android:id="@+id/chipGroup"
120121
android:layout_width="match_parent"
121122
android:layout_height="wrap_content"
122123
android:layout_marginTop="@dimen/standard_half_margin"
@@ -158,6 +159,16 @@
158159

159160
</com.google.android.material.chip.ChipGroup>
160161

162+
<com.google.android.material.button.MaterialButton
163+
android:id="@+id/dialogBtn"
164+
android:layout_width="wrap_content"
165+
android:layout_height="wrap_content"
166+
android:text="@string/open_dialog"
167+
android:layout_marginTop="@dimen/standard_half_margin"
168+
android:layout_marginBottom="@dimen/standard_half_margin"
169+
app:layout_constraintTop_toBottomOf="@id/chipGroup"
170+
app:layout_constraintStart_toStartOf="parent" />
171+
161172
</androidx.constraintlayout.widget.ConstraintLayout>
162173
</FrameLayout>
163174

sample/src/main/res/values/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88
<string name="app_name">Sample</string>
99
<string name="title_ui">UI</string>
1010
<string name="apply_theme">Apply Theme</string>
11+
<string name="open_dialog">Open Dialog</string>
12+
<string name="ok">Ok</string>
13+
<string name="dismiss">Dismiss</string>
14+
<string name="cancel">Cancel</string>
15+
<string name="dialog_title">Example title</string>
16+
<string name="dialog_message">This is an example message</string>
1117
<string name="assist_chip">Assist Chip</string>
1218
<string name="input_chip">Input Chip</string>
1319
<string name="suggestion_chip">Suggestion Chip</string>

0 commit comments

Comments
 (0)