Adjust styling and sizing for rationale dialog.

This commit is contained in:
Alex Hart 2024-03-07 11:10:23 -04:00
parent aeedab1531
commit e0bd60f87c
3 changed files with 38 additions and 26 deletions

View file

@ -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);

View file

@ -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>

View file

@ -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)