From dea5490bcf5a1f29dfdc50f073773697691bdc62 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Mon, 8 Jun 2026 15:43:17 +0200 Subject: [PATCH] feat: scaffold CalendulaApp + MainActivity with themed placeholder CalendulaApp registers the Hilt component graph. MainActivity uses enableEdgeToEdge() and renders a centered placeholder showing app name + tagline via CalendulaTheme. PlaceholderPreview lets the IDE preview the layout. Resolves the pre-existing MissingClass lint error from the manifest reference. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../jeanlucmakiola/calendula/CalendulaApp.kt | 11 ++++ .../jeanlucmakiola/calendula/MainActivity.kt | 59 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 app/src/main/java/de/jeanlucmakiola/calendula/CalendulaApp.kt create mode 100644 app/src/main/java/de/jeanlucmakiola/calendula/MainActivity.kt diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/CalendulaApp.kt b/app/src/main/java/de/jeanlucmakiola/calendula/CalendulaApp.kt new file mode 100644 index 0000000..3be4be8 --- /dev/null +++ b/app/src/main/java/de/jeanlucmakiola/calendula/CalendulaApp.kt @@ -0,0 +1,11 @@ +package de.jeanlucmakiola.calendula + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +/** + * Application entry point. Registered as android:name=".CalendulaApp" + * in AndroidManifest.xml. Hilt initializes its component graph here. + */ +@HiltAndroidApp +class CalendulaApp : Application() diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/MainActivity.kt b/app/src/main/java/de/jeanlucmakiola/calendula/MainActivity.kt new file mode 100644 index 0000000..9787511 --- /dev/null +++ b/app/src/main/java/de/jeanlucmakiola/calendula/MainActivity.kt @@ -0,0 +1,59 @@ +package de.jeanlucmakiola.calendula + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import dagger.hilt.android.AndroidEntryPoint +import de.jeanlucmakiola.calendula.ui.theme.CalendulaTheme + +@AndroidEntryPoint +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + CalendulaTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + PlaceholderScreen(modifier = Modifier.padding(innerPadding)) + } + } + } + } +} + +@Composable +private fun PlaceholderScreen(modifier: Modifier = Modifier) { + Column( + modifier = modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = stringResource(R.string.app_name), + style = MaterialTheme.typography.displayMedium, + ) + Text( + text = stringResource(R.string.app_tagline), + style = MaterialTheme.typography.bodyLarge, + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun PlaceholderPreview() { + CalendulaTheme { PlaceholderScreen() } +}