diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..1c825a2 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt b/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt index fc8cb37..b65f60d 100644 --- a/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt +++ b/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items @@ -58,26 +59,37 @@ class MainActivity : ComponentActivity() { setContent { ShapPlannerTheme { - LaunchedEffect(Unit) { - mainViewModel.addAccount(Account(UUID.randomUUID(), "MiauRizius", "Pfadi-WG")) - } - val isLoggedIn by loginViewModel.isLoggedIn.collectAsState() - val accountList by mainViewModel.accounts.collectAsState() // Lädt aus Room + val accountList by mainViewModel.accounts.collectAsState() + val selectedAccount = mainViewModel.selectedAccount - if (isLoggedIn) { - if (accountList.isEmpty()) { - // Zeige Button "Ersten Account erstellen" - } else { + when { + !isLoggedIn || accountList.isEmpty() -> { + LoginScreen { userId -> + val acc = Account(userId, "MiauRizius", "Pfadi-WG") //TODO: get data from backend + mainViewModel.addAccount(acc) + loginViewModel.login(acc.id.toString()) + } + } + + selectedAccount != null -> { + DashboardScreen( + account = selectedAccount, + onBack = { mainViewModel.logoutFromAccount() } + ) + } + + else -> { AccountSelectionScreen( accounts = accountList, onAccountClick = { account -> mainViewModel.selectAccount(account) + }, + onAddAccountClick = { + loginViewModel.logout() } ) } - } else { - LoginScreen { userId -> loginViewModel.login(userId) } } } } @@ -85,9 +97,9 @@ class MainActivity : ComponentActivity() { } @Composable -fun AccountSelectionScreen(accounts: List, onAccountClick: (Account) -> Unit) { +fun AccountSelectionScreen(accounts: List, onAccountClick: (Account) -> Unit, onAddAccountClick: () -> Unit) { LazyColumn( - modifier = Modifier.fillMaxSize().padding(16.dp), + modifier = Modifier.fillMaxSize().padding(16.dp).statusBarsPadding(), verticalArrangement = Arrangement.spacedBy(12.dp) ) { item { @@ -106,14 +118,23 @@ fun AccountSelectionScreen(accounts: List, onAccountClick: (Account) -> } } } + item { + Spacer(modifier = Modifier.height(8.dp)) + Button( + onClick = onAddAccountClick, + modifier = Modifier.fillMaxWidth() + ) { + Text("Anderen Account hinzufügen") + } + } } } @Composable -fun LoginScreen(onLogin: (String) -> Unit) { +fun LoginScreen(onLogin: (UUID) -> Unit) { var userId by remember { mutableStateOf("") } - Column(modifier = Modifier.padding(16.dp)) { + Column(modifier = Modifier.padding(16.dp).statusBarsPadding()) { Text("Bitte anmelden") Spacer(modifier = Modifier.height(8.dp)) TextField( @@ -122,8 +143,43 @@ fun LoginScreen(onLogin: (String) -> Unit) { label = { Text("User ID") } ) Spacer(modifier = Modifier.height(8.dp)) - Button(onClick = { if(userId.isNotEmpty()) onLogin(userId) }) { + Button(onClick = { if(userId.isNotEmpty()) onLogin(UUID.fromString(userId)) }) { Text("Login") } } +} + +@Composable +fun DashboardScreen(account: Account, onBack: () -> Unit) { + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp) + .statusBarsPadding() + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Column { + Text(text = "Hallo, ${account.name}!", style = MaterialTheme.typography.headlineMedium) + Text(text = "WG: ${account.wgName}", style = MaterialTheme.typography.bodyLarge, color = Color.Gray) + } + Button(onClick = onBack) { + Text("Wechseln") + } + } + + Spacer(modifier = Modifier.height(32.dp)) + + Box( + modifier = Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.surfaceVariant, shape = MaterialTheme.shapes.medium), + contentAlignment = Alignment.Center + ) { + Text("Hier kommen bald deine WG-Kosten hin 🚀") + } + } } \ No newline at end of file diff --git a/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt b/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt index bcd43d0..465cfb7 100644 --- a/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt +++ b/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt @@ -1,5 +1,8 @@ package de.miaurizius.shap_planner.viewmodels +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import de.miaurizius.shap_planner.entities.Account @@ -23,5 +26,14 @@ class MainViewModel(private val accountDao: AccountDao) : ViewModel() { } } - fun selectAccount(account: Account) {} + var selectedAccount by mutableStateOf(null) + private set + + fun selectAccount(account: Account) { + selectedAccount = account + } + + fun logoutFromAccount() { + selectedAccount = null + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ca3826a 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 2b068d1..01f250c 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,30 +1,50 @@ - - - - - - - - + android:viewportWidth="1024" + android:viewportHeight="1024"> + - \ No newline at end of file + android:pathData="M764.8,146v119.9l69.5,53.4v-149c0,-13.4 -10.8,-24.2 -24.2,-24.2h-45.3z" + android:fillColor="#FF6339"/> + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 75% rename from app/src/main/res/mipmap-anydpi/ic_launcher.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755..bbd3e02 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 75% rename from app/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755..bbd3e02 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78..a243d80 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d..cbefea0 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d6..85174ff 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611d..a7af175 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a307..e0cb725 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a695..29a2459 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 28d4b77..2340101 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f50..8660192 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index aa7d642..cfdb99b 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae3..0d67031 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb7131e..5b717f6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - Shap-Planner + ShAp-Planner \ No newline at end of file