From 1a3508d52786fc05f62167cdd8d39364deb5c982 Mon Sep 17 00:00:00 2001 From: Tretzi Date: Thu, 9 Apr 2026 21:01:02 -0500 Subject: [PATCH] Auto commit Thu Apr 9 09:01:02 PM CDT 2026 --- .../java/com/mindmachine/mvp/MainActivity.kt | 53 +++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/mindmachine/mvp/MainActivity.kt b/app/src/main/java/com/mindmachine/mvp/MainActivity.kt index bb7e4f5..a92164f 100644 --- a/app/src/main/java/com/mindmachine/mvp/MainActivity.kt +++ b/app/src/main/java/com/mindmachine/mvp/MainActivity.kt @@ -2,6 +2,7 @@ package com.mindmachine.mvp import android.app.Activity import android.content.pm.ActivityInfo +import android.graphics.BitmapFactory import android.os.Bundle import android.view.WindowManager import androidx.activity.ComponentActivity @@ -9,6 +10,7 @@ import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.foundation.background +import androidx.compose.foundation.Image import com.mindmachine.mvp.session.DurationSliderCard import com.mindmachine.mvp.session.SetupTimelineEditor import androidx.compose.foundation.clickable @@ -24,6 +26,7 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawingPadding @@ -39,6 +42,7 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material.icons.filled.Settings +import androidx.compose.ui.res.painterResource import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -73,6 +77,7 @@ import androidx.compose.runtime.withFrameNanos import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLifecycleOwner @@ -110,6 +115,8 @@ import kotlinx.coroutines.delay import kotlin.math.roundToInt import java.util.Locale +import com.mindmachine.mvp.R + private const val SESSION_ENTRY_HOME = "home" private const val SESSION_ENTRY_SETUP = "setup" @@ -205,7 +212,19 @@ fun App(vm: MainViewModel = viewModel()) { .fillMaxSize() .safeDrawingPadding() ) { - TopAppBar(title = { Text("MindMachine") }, actions = { + TopAppBar( + title = { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon( + painter = painterResource(id = R.mipmap.ic_launcher), + contentDescription = "MindMachine", + modifier = Modifier.size(20.dp) + ) + Spacer(Modifier.width(8.dp)) + Text("MindMachine") + } + }, + actions = { IconButton( onClick = { vm.createNewProgramDraft() @@ -217,7 +236,8 @@ fun App(vm: MainViewModel = viewModel()) { IconButton(onClick = { nav.navigate("settings") }) { Icon(Icons.Filled.Settings, contentDescription = "Settings") } - }) + } + ) LazyColumn(Modifier.padding(12.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { item { TextButton(onClick = { nav.navigate("holder") }) { Text("User Guidance/Disclaimer") } @@ -811,6 +831,7 @@ fun SettingsScreen(vm: MainViewModel) { @Composable fun PositioningScreen() { + val context = LocalContext.current Column( Modifier .fillMaxSize() @@ -820,10 +841,36 @@ fun PositioningScreen() { verticalArrangement = Arrangement.spacedBy(8.dp) ) { Text("Positioning Guidance", style = MaterialTheme.typography.headlineSmall, color = MaterialTheme.colorScheme.onBackground) + + // Guide image (from assets) + val guideBitmap = remember { + runCatching { + context.assets.open("positioning_guide.png").use { input -> + android.graphics.BitmapFactory.decodeStream(input) + } + }.getOrNull() + } + if (guideBitmap != null) { + Image( + bitmap = guideBitmap.asImageBitmap(), + contentDescription = "Positioning guide", + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp) + ) + } + Text("• Lie on your back in a safe, comfortable place.", color = MaterialTheme.colorScheme.onBackground) Text("• Rest the phone across the upper nose/forehead area so it stays stable.", color = MaterialTheme.colorScheme.onBackground) Text("• Keep your eyes closed during immersive visual sessions.", color = MaterialTheme.colorScheme.onBackground) - Text("• Do not place the phone directly on your eyes or apply pressure.", color = MaterialTheme.colorScheme.onBackground) + Text("• Do not rest the phone on your eyes or put pressure on your face.", color = MaterialTheme.colorScheme.onBackground) Text("• Ensure comfortable breathing/airflow and stop if you feel discomfort.", color = MaterialTheme.colorScheme.onBackground) + + Spacer(Modifier.height(12.dp)) + Text("Disclaimer", style = MaterialTheme.typography.titleMedium, color = MaterialTheme.colorScheme.onBackground) + Text( + "MindMachine is provided \"as is\" for informational and experimental purposes only, without warranties of any kind. You assume all risks of use. MindMachine is not a medical device and does not provide medical advice. To the maximum extent permitted by law, the developers and distributors disclaim all liability for any claims, damages, losses, or injuries arising from or related to use of the app.", + color = MaterialTheme.colorScheme.onBackground + ) } }