Adjust styling and sizing for rationale dialog.
This commit is contained in:
parent
aeedab1531
commit
e0bd60f87c
3 changed files with 38 additions and 26 deletions
|
@ -20,23 +20,29 @@ import androidx.core.graphics.drawable.DrawableCompat;
|
||||||
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
|
||||||
|
import org.signal.core.util.DimensionUnit;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.util.ThemeUtil;
|
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class RationaleDialog {
|
public class RationaleDialog {
|
||||||
|
|
||||||
public static MaterialAlertDialogBuilder createFor(@NonNull Context context, @NonNull String message, @DrawableRes int... drawables) {
|
public static MaterialAlertDialogBuilder createFor(@NonNull Context context, @NonNull String message, @DrawableRes int... drawables) {
|
||||||
View view = LayoutInflater.from(context).inflate(R.layout.permissions_rationale_dialog, null);
|
View view = LayoutInflater.from(context).inflate(R.layout.permissions_rationale_dialog, null);
|
||||||
ViewGroup header = view.findViewById(R.id.header_container);
|
ViewGroup header = view.findViewById(R.id.header_container);
|
||||||
TextView text = view.findViewById(R.id.message);
|
TextView text = view.findViewById(R.id.message);
|
||||||
|
int iconSize = (int) DimensionUnit.DP.toPixels(32);
|
||||||
|
|
||||||
for (int i=0;i<drawables.length;i++) {
|
for (int i=0;i<drawables.length;i++) {
|
||||||
Drawable drawable = ContextCompat.getDrawable(context, drawables[i]);
|
Drawable drawable = Objects.requireNonNull(ContextCompat.getDrawable(context, drawables[i]));
|
||||||
DrawableCompat.setTint(drawable, ContextCompat.getColor(context, R.color.white));
|
DrawableCompat.setTint(drawable, ContextCompat.getColor(context, R.color.white));
|
||||||
ImageView imageView = new ImageView(context);
|
ImageView imageView = new ImageView(context);
|
||||||
imageView.setImageDrawable(drawable);
|
imageView.setImageDrawable(drawable);
|
||||||
imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
|
||||||
|
imageView.setLayoutParams(new LayoutParams(iconSize, iconSize));
|
||||||
|
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||||
|
|
||||||
header.addView(imageView);
|
header.addView(imageView);
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,31 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
tools:viewBindingIgnore="true"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:viewBindingIgnore="true">
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/header_container"
|
<LinearLayout
|
||||||
android:background="@color/core_ultramarine"
|
android:id="@+id/header_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:background="@color/signal_colorPrimary"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:padding="40dp">
|
android:orientation="horizontal"
|
||||||
|
android:padding="48dp">
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView android:id="@+id/message"
|
<TextView
|
||||||
|
android:id="@+id/message"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="20dp"
|
android:paddingHorizontal="24dp"
|
||||||
android:paddingStart="20dp"
|
android:paddingTop="16dp"
|
||||||
android:paddingEnd="20dp"
|
|
||||||
android:textSize="15sp"
|
|
||||||
android:lineSpacingMultiplier="1.3"
|
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
tools:text="Signal needs access to your contacts and media in order to connect with friends, exchange messages, and make secure calls."/>
|
android:textAppearance="@style/Signal.Text.BodyMedium"
|
||||||
|
android:textColor="@color/signal_colorOnSurfaceVariant"
|
||||||
|
tools:text="Signal needs access to your contacts and media in order to connect with friends, exchange messages, and make secure calls." />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -31,6 +31,7 @@ import androidx.compose.ui.window.DialogProperties
|
||||||
import org.signal.core.ui.Dialogs.PermissionRationaleDialog
|
import org.signal.core.ui.Dialogs.PermissionRationaleDialog
|
||||||
import org.signal.core.ui.Dialogs.SimpleAlertDialog
|
import org.signal.core.ui.Dialogs.SimpleAlertDialog
|
||||||
import org.signal.core.ui.Dialogs.SimpleMessageDialog
|
import org.signal.core.ui.Dialogs.SimpleMessageDialog
|
||||||
|
import org.signal.core.ui.theme.SignalTheme
|
||||||
|
|
||||||
object Dialogs {
|
object Dialogs {
|
||||||
|
|
||||||
|
@ -138,12 +139,14 @@ object Dialogs {
|
||||||
onDismiss: () -> Unit
|
onDismiss: () -> Unit
|
||||||
) {
|
) {
|
||||||
Dialog(
|
Dialog(
|
||||||
onDismissRequest = onDismiss
|
onDismissRequest = onDismiss,
|
||||||
|
properties = DialogProperties(usePlatformDefaultWidth = false)
|
||||||
) {
|
) {
|
||||||
Surface(
|
Surface(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.fillMaxWidth(fraction = 0.75f)
|
||||||
.background(
|
.background(
|
||||||
color = MaterialTheme.colorScheme.secondaryContainer,
|
color = SignalTheme.colors.colorSurface2,
|
||||||
shape = AlertDialogDefaults.shape
|
shape = AlertDialogDefaults.shape
|
||||||
)
|
)
|
||||||
.clip(AlertDialogDefaults.shape)
|
.clip(AlertDialogDefaults.shape)
|
||||||
|
@ -154,26 +157,28 @@ object Dialogs {
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.background(color = MaterialTheme.colorScheme.primary)
|
.background(color = MaterialTheme.colorScheme.primary)
|
||||||
.padding(40.dp)
|
.padding(48.dp)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = icon,
|
painter = icon,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.onPrimary
|
tint = MaterialTheme.colorScheme.onPrimary,
|
||||||
|
modifier = Modifier.size(32.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
Text(
|
||||||
text = rationale,
|
text = rationale,
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(top = 20.dp)
|
.padding(horizontal = 24.dp, vertical = 16.dp)
|
||||||
.padding(horizontal = 20.dp)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
FlowRow(
|
FlowRow(
|
||||||
horizontalArrangement = Arrangement.End,
|
horizontalArrangement = Arrangement.End,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.padding(24.dp)
|
.padding(start = 24.dp, end = 24.dp, bottom = 24.dp)
|
||||||
) {
|
) {
|
||||||
TextButton(onClick = onDismiss) {
|
TextButton(onClick = onDismiss) {
|
||||||
Text(text = dismiss)
|
Text(text = dismiss)
|
||||||
|
|
Loading…
Add table
Reference in a new issue