Skip to content

Commit e228c81

Browse files
refactor: Update Accessibility Explainer Dialog UI and improve layout consistency
1 parent 612e71b commit e228c81

35 files changed

Lines changed: 84 additions & 64 deletions

File tree

feature/home/src/main/java/com/scrolless/app/feature/home/HomeScreen.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,13 @@ import androidx.compose.foundation.layout.WindowInsets
4242
import androidx.compose.foundation.layout.fillMaxSize
4343
import androidx.compose.foundation.layout.fillMaxWidth
4444
import androidx.compose.foundation.layout.height
45+
import androidx.compose.foundation.layout.navigationBars
4546
import androidx.compose.foundation.layout.padding
4647
import androidx.compose.foundation.layout.safeDrawing
48+
import androidx.compose.foundation.layout.statusBars
49+
import androidx.compose.foundation.layout.windowInsetsBottomHeight
4750
import androidx.compose.foundation.layout.windowInsetsPadding
51+
import androidx.compose.foundation.layout.windowInsetsTopHeight
4852
import androidx.compose.foundation.pager.HorizontalPager
4953
import androidx.compose.foundation.pager.PagerState
5054
import androidx.compose.foundation.pager.rememberPagerState
@@ -282,7 +286,7 @@ fun HomeScreen(
282286
}
283287

284288
HomeContent(
285-
modifier = modifier.windowInsetsPadding(WindowInsets.safeDrawing),
289+
modifier = modifier,
286290
uiState = uiState,
287291
onNavigateToSettings = onNavigateToSettings,
288292
onBlockOptionSelected = { blockOption ->
@@ -518,14 +522,16 @@ private fun HomeContent(
518522
onUsageAnalyticsDateSelected = onUsageAnalyticsDateSelected,
519523
onSwipeStart = { hasDismissedSwipeHint = true },
520524
)
521-
.padding(16.dp),
525+
.padding(horizontal = 16.dp),
522526
) {
523527
Column(
524528
modifier = Modifier
525529
.fillMaxSize()
526530
.verticalScroll(rememberScrollState()),
527531
horizontalAlignment = Alignment.CenterHorizontally,
528532
) {
533+
Spacer(modifier = Modifier.windowInsetsTopHeight(WindowInsets.statusBars))
534+
529535
UsageOverviewHeader(
530536
uiState = uiState,
531537
analytics = analytics,
@@ -583,6 +589,8 @@ private fun HomeContent(
583589
)
584590
}
585591
}
592+
593+
Spacer(modifier = Modifier.windowInsetsBottomHeight(WindowInsets.navigationBars))
586594
}
587595

588596
if (showDebugPanel) {

feature/home/src/main/java/com/scrolless/app/feature/home/dialogs/AccessibilityExplainerDialog.kt

Lines changed: 72 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ import androidx.compose.foundation.rememberScrollState
3737
import androidx.compose.foundation.shape.CircleShape
3838
import androidx.compose.foundation.shape.RoundedCornerShape
3939
import androidx.compose.foundation.verticalScroll
40+
import androidx.compose.material.icons.Icons
41+
import androidx.compose.material.icons.filled.Close
42+
import androidx.compose.material.icons.filled.Info
43+
import androidx.compose.material.icons.filled.Settings
4044
import androidx.compose.material3.Button
4145
import androidx.compose.material3.ButtonDefaults
4246
import androidx.compose.material3.Card
@@ -148,17 +152,7 @@ private fun AccessibilityExplainerContent(onDismiss: () -> Unit, onOpenSettings:
148152
maxLines = 1,
149153
)
150154

151-
Spacer(modifier = Modifier.height(8.dp))
152-
153-
AutoResizingText(
154-
text = stringResource(R.string.accessibility_explainer_subtitle),
155-
style = MaterialTheme.typography.bodyMedium,
156-
color = MaterialTheme.colorScheme.onSurface,
157-
textAlign = TextAlign.Center,
158-
maxLines = 2,
159-
)
160-
161-
Spacer(modifier = Modifier.height(24.dp))
155+
Spacer(modifier = Modifier.height(16.dp))
162156

163157
// Steps with staggered animation
164158
AccessibilityStep(
@@ -219,6 +213,8 @@ private fun AccessibilityExplainerContent(onDismiss: () -> Unit, onOpenSettings:
219213
maxLines = 1,
220214
)
221215
}
216+
217+
Spacer(modifier = Modifier.height(12.dp))
222218
// Privacy Note
223219
Card(
224220
modifier = Modifier.fillMaxWidth(),
@@ -227,14 +223,26 @@ private fun AccessibilityExplainerContent(onDismiss: () -> Unit, onOpenSettings:
227223
),
228224
shape = RoundedCornerShape(16.dp),
229225
) {
230-
Text(
231-
text = stringResource(R.string.accessibility_explainer_privacy_note),
232-
style = MaterialTheme.typography.bodySmall,
233-
color = MaterialTheme.colorScheme.onSecondaryContainer,
234-
textAlign = TextAlign.Center,
235-
fontWeight = FontWeight.Light,
226+
Row(
236227
modifier = Modifier.padding(12.dp),
237-
)
228+
verticalAlignment = Alignment.CenterVertically,
229+
) {
230+
Icon(
231+
imageVector = Icons.Filled.Info,
232+
contentDescription = null,
233+
modifier = Modifier.size(20.dp),
234+
tint = MaterialTheme.colorScheme.onSecondaryContainer,
235+
)
236+
Spacer(modifier = Modifier.width(12.dp))
237+
Text(
238+
text = stringResource(R.string.accessibility_explainer_privacy_note),
239+
style = MaterialTheme.typography.bodySmall,
240+
color = MaterialTheme.colorScheme.onSecondaryContainer,
241+
textAlign = TextAlign.Start,
242+
fontWeight = FontWeight.Medium,
243+
modifier = Modifier.weight(1f),
244+
)
245+
}
238246
}
239247

240248
Spacer(modifier = Modifier.height(16.dp))
@@ -246,17 +254,33 @@ private fun AccessibilityExplainerContent(onDismiss: () -> Unit, onOpenSettings:
246254
},
247255
modifier = Modifier
248256
.fillMaxWidth()
249-
.height(42.dp),
257+
.height(48.dp),
250258
colors = ButtonDefaults.buttonColors(
251259
containerColor = MaterialTheme.colorScheme.primaryContainer,
252260
),
253261
shape = RoundedCornerShape(12.dp),
254262
) {
255-
Text(
256-
text = stringResource(R.string.accessibility_explainer_proceed_button),
257-
fontWeight = FontWeight.Bold,
258-
color = MaterialTheme.colorScheme.onPrimaryContainer,
259-
)
263+
Row(
264+
verticalAlignment = Alignment.CenterVertically,
265+
horizontalArrangement = Arrangement.Center,
266+
) {
267+
Icon(
268+
imageVector = Icons.Filled.Settings,
269+
contentDescription = null,
270+
modifier = Modifier.size(18.dp),
271+
tint = MaterialTheme.colorScheme.onPrimaryContainer,
272+
)
273+
Spacer(modifier = Modifier.width(8.dp))
274+
AutoResizingText(
275+
text = stringResource(R.string.accessibility_explainer_proceed_button),
276+
modifier = Modifier.weight(1f, fill = false),
277+
fontWeight = FontWeight.Bold,
278+
color = MaterialTheme.colorScheme.onPrimaryContainer,
279+
style = MaterialTheme.typography.bodyMedium.copy(fontSize = 14.sp),
280+
maxLines = 1,
281+
minFontSize = 10.sp,
282+
)
283+
}
260284
}
261285

262286
Spacer(modifier = Modifier.height(8.dp))
@@ -267,12 +291,31 @@ private fun AccessibilityExplainerContent(onDismiss: () -> Unit, onOpenSettings:
267291
Timber.d("AccessibilityExplainer: Not now")
268292
onDismiss()
269293
},
270-
modifier = Modifier.fillMaxWidth(),
294+
modifier = Modifier
295+
.fillMaxWidth()
296+
.height(48.dp),
271297
) {
272-
Text(
273-
text = stringResource(R.string.accessibility_explainer_not_now_button),
274-
color = MaterialTheme.colorScheme.primary,
275-
)
298+
Row(
299+
verticalAlignment = Alignment.CenterVertically,
300+
horizontalArrangement = Arrangement.Center,
301+
) {
302+
Icon(
303+
imageVector = Icons.Filled.Close,
304+
contentDescription = null,
305+
modifier = Modifier.size(18.dp),
306+
tint = MaterialTheme.colorScheme.primary,
307+
)
308+
Spacer(modifier = Modifier.width(8.dp))
309+
AutoResizingText(
310+
text = stringResource(R.string.accessibility_explainer_not_now_button),
311+
modifier = Modifier.weight(1f, fill = false),
312+
fontWeight = FontWeight.Bold,
313+
color = MaterialTheme.colorScheme.primary,
314+
style = MaterialTheme.typography.bodyMedium.copy(fontSize = 14.sp),
315+
maxLines = 1,
316+
minFontSize = 10.sp,
317+
)
318+
}
276319
}
277320
}
278321

mobile/src/main/res/values-b+sr+Latn/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Pronađite aplikacije i dodirnite „Scrolless“ na listi usluga</string>
2626
<string name="accessibility_explainer_step3">Prebacite prekidač na UKLJUČENO da biste omogućili Scrolless-u da vam pomogne da zaustavite beskonačno skrolovanje</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless-u je potreban pristup pristupačnosti da bi otkrio i zaustavio kratke video zapise.</string>
28-
<string name="accessibility_explainer_title">Potreban nam je pristup pristupačnosti</string>
2928
<string name="accessibility_service_description">Ova usluga otkriva kada se otvore reels/shorts/tiktok, tako da ih Scrolless može blokirati ako je konfigurisan.</string>
3029
<string name="accessibility_success_description">Scrolless je sada spreman!</string>
3130
<string name="accessibility_success_title">Sve je spremno!</string>

mobile/src/main/res/values-ca/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Cerca aplicacions i toca \"Scrolless\" a la llista de serveis</string>
2626
<string name="accessibility_explainer_step3">Activa l\'interruptor per permetre que Scrolless t\'ajudi a aturar el desplaçament sense fi</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless necessita accés d\'accessibilitat per detectar i aturar vídeos curts.</string>
28-
<string name="accessibility_explainer_title">Necessitem accés d\'accessibilitat</string>
2928
<string name="accessibility_service_description">Aquest servei detecta quan s\'obren reels/shorts/tiktok perquè Scrolless els pugui bloquejar si està configurat.</string>
3029
<string name="accessibility_success_description">Scrolless ja està a punt!</string>
3130
<string name="accessibility_success_title">Tot a punt!</string>

mobile/src/main/res/values-cs/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Najděte aplikace a klepněte na „Scrolless“ v seznamu služeb</string>
2626
<string name="accessibility_explainer_step3">Přepněte přepínač do polohy ZAPNUTO, abyste aplikaci Scrolless umožnili pomoci vám zastavit nekonečné posouvání</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless potřebuje přístup k usnadnění přístupu k detekci a zastavení krátkých videí.</string>
28-
<string name="accessibility_explainer_title">Potřebujeme přístup k usnadnění přístupu</string>
2928
<string name="accessibility_service_description">Tato služba detekuje, kdy jsou otevřeny Reels/Shorts/TikTok, aby je Scrolless mohl zablokovat, pokud je tak nastaven.</string>
3029
<string name="accessibility_success_description">Scrolless je nyní připraven!</string>
3130
<string name="accessibility_success_title">Vše nastaveno!</string>

mobile/src/main/res/values-de/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Suchen Sie Anwendungen und tippen Sie in der Diensteliste auf \"Scrolless\"</string>
2626
<string name="accessibility_explainer_step3">Schalten Sie den Schalter auf EIN, damit Scrolless Ihnen helfen kann, endloses Scrollen zu stoppen</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless benötigt Barrierefreiheitszugriff, um kurze Videos zu erkennen und zu stoppen.</string>
28-
<string name="accessibility_explainer_title">Wir benötigen Barrierefreiheitszugriff</string>
2928
<string name="accessibility_service_description">Dieser Dienst erkennt, wann Reels/Shorts/TikToks geöffnet werden, damit Scrolless sie bei entsprechender Konfiguration blockieren kann.</string>
3029
<string name="accessibility_success_description">Scrolless ist jetzt bereit!</string>
3130
<string name="accessibility_success_title">Alles klar!</string>

mobile/src/main/res/values-el/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Βρείτε τις εφαρμογές και πατήστε στο \"Scrolless\" στη λίστα υπηρεσιών</string>
2626
<string name="accessibility_explainer_step3">Ενεργοποιήστε τον διακόπτη για να επιτρέψετε στο Scrolless να σας βοηθήσει να σταματήσετε το ατελείωτο scrolling</string>
2727
<string name="accessibility_explainer_subtitle">Το Scrolless χρειάζεται πρόσβαση στην προσβασιμότητα για να εντοπίζει και να σταματά τα σύντομα βίντεο.</string>
28-
<string name="accessibility_explainer_title">Χρειαζόμαστε Πρόσβαση στην Προσβασιμότητα</string>
2928
<string name="accessibility_service_description">Αυτή η υπηρεσία εντοπίζει πότε ανοίγουν τα reels/shorts/tiktok, ώστε το Scrolless να μπορεί να τα μπλοκάρει, αν έχει ρυθμιστεί.</string>
3029
<string name="accessibility_success_description">Το Scrolless είναι τώρα έτοιμο!</string>
3130
<string name="accessibility_success_title">Όλα Έτοιμα!</string>

mobile/src/main/res/values-es/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Busca aplicaciones y toca \"Scrolless\" en la lista de servicios</string>
2626
<string name="accessibility_explainer_step3">Activa el interruptor para permitir que Scrolless te ayude a detener el desplazamiento sin fin</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless necesita acceso de accesibilidad para detectar y detener vídeos cortos.</string>
28-
<string name="accessibility_explainer_title">Necesitamos Acceso de Accesibilidad</string>
2928
<string name="accessibility_service_description">Este servicio detecta cuándo se abren reels/shorts/tiktok para que Scrolless pueda bloquearlos si está configurado.</string>
3029
<string name="accessibility_success_description">¡Scrolless ya está listo!</string>
3130
<string name="accessibility_success_title">¡Todo listo!</string>

mobile/src/main/res/values-fi-rFI/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Etsi sovellukset ja napauta \"Scrolless\" palveluiden luettelosta</string>
2626
<string name="accessibility_explainer_step3">Kytke kytkin PÄÄLLE, jotta Scrolless voi auttaa sinua lopettamaan loputtoman selaamisen</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless tarvitsee esteettömyysluvan havaitakseen ja pysäyttääkseen lyhyet videot.</string>
28-
<string name="accessibility_explainer_title">Tarvitsemme esteettömyysluvan</string>
2928
<string name="accessibility_service_description">Tämä palvelu havaitsee, kun reels/shorts/tiktok avataan, jotta Scrolless voi estää ne, jos se on määritetty.</string>
3029
<string name="accessibility_success_description">Scrolless on nyt valmis!</string>
3130
<string name="accessibility_success_title">Valmista!</string>

mobile/src/main/res/values-fr/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
<string name="accessibility_explainer_step2">Recherchez les applications et appuyez sur \"Scrolless\" dans la liste des services</string>
2626
<string name="accessibility_explainer_step3">Activez l\'interrupteur pour permettre à Scrolless de vous aider à arrêter le défilement sans fin</string>
2727
<string name="accessibility_explainer_subtitle">Scrolless a besoin de l\'accès à l\'accessibilité pour détecter et arrêter les vidéos courtes.</string>
28-
<string name="accessibility_explainer_title">Nous avons besoin de l\'accès à l\'accessibilité</string>
2928
<string name="accessibility_service_description">Ce service détecte quand les Reels/Shorts/TikTok sont ouverts afin que Scrolless puisse les bloquer si configuré.</string>
3029
<string name="accessibility_success_description">Scrolless est maintenant prêt !</string>
3130
<string name="accessibility_success_title">Tout est prêt !</string>

0 commit comments

Comments
 (0)