diff --git a/DBTApp/.idea/deploymentTargetSelector.xml b/DBTApp/.idea/deploymentTargetSelector.xml
index 4baf7a9..d50afaf 100644
--- a/DBTApp/.idea/deploymentTargetSelector.xml
+++ b/DBTApp/.idea/deploymentTargetSelector.xml
@@ -8,6 +8,9 @@
+
+
+
\ No newline at end of file
diff --git a/DBTApp/app/src/main/AndroidManifest.xml b/DBTApp/app/src/main/AndroidManifest.xml
index c8854e3..77d63e8 100644
--- a/DBTApp/app/src/main/AndroidManifest.xml
+++ b/DBTApp/app/src/main/AndroidManifest.xml
@@ -11,6 +11,15 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DBTApp"
- tools:targetApi="31" />
+ tools:targetApi="31">
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DBTApp/app/src/main/java/de/cdaut/dbtapp/MainActivity.kt b/DBTApp/app/src/main/java/de/cdaut/dbtapp/MainActivity.kt
index e4f0737..227b740 100644
--- a/DBTApp/app/src/main/java/de/cdaut/dbtapp/MainActivity.kt
+++ b/DBTApp/app/src/main/java/de/cdaut/dbtapp/MainActivity.kt
@@ -1,17 +1,93 @@
package de.cdaut.dbtapp
+import android.graphics.drawable.shapes.Shape
import android.os.Bundle
import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Emergency
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonColors
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.FloatingActionButton
+import androidx.compose.material3.Icon
+import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Shapes
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
-import androidx.activity.compose.setContent
+import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+import androidx.navigation.compose.rememberNavController
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+import de.cdaut.dbtapp.components.BottomNavigationBar
+import de.cdaut.dbtapp.navigation.Screens
-class MainActivity : ComponentActivity(){
+class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
+ MainContent()
}
}
}
+@Preview(locale = "en-US")
+@Composable
+private fun MainContent() {
+ val navController = rememberNavController()
+ Box {
+ Scaffold(
+ modifier = Modifier.fillMaxSize(),
+ bottomBar = { BottomNavigationBar(navController) },
+ floatingActionButton = { EmergencyButton() }
+ ) { paddingValues ->
+ NavHost(
+ navController = navController,
+ startDestination = Screens.Home.route,
+ modifier = Modifier.padding(paddingValues = paddingValues)
+ ) {
+ composable(Screens.Tracking.route) {
+ Text("Tracking")
+ }
+ composable(Screens.Skillslist.route) {
+ Text("Skillslist")
+ }
+ composable(Screens.Home.route) {
+ Text("Home")
+ }
+ composable(Screens.Favourites.route) {
+ Text("Favourites")
+
+ }
+ composable(Screens.Skillschains.route) {
+ Text("Skillschains")
+
+ }
+ }
+ }
+ }
+}
+
+@Preview
+@Composable
+private fun EmergencyButton() {
+ FloatingActionButton(
+ onClick = {},
+ containerColor = Color.Red
+ ) {
+ Icon(
+ imageVector = Icons.Filled.Emergency,
+ contentDescription = stringResource(R.string.emergency_button_description),
+ )
+ }
+}
\ No newline at end of file
diff --git a/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavBar.kt b/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavBar.kt
deleted file mode 100644
index 62c3fe6..0000000
--- a/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavBar.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-package de.cdaut.dbtapp.components
-
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.Icon
-import androidx.compose.material3.NavigationBar
-import androidx.compose.material3.NavigationBarItem
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableIntStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.navigation.NavGraph.Companion.findStartDestination
-import androidx.navigation.compose.rememberNavController
-import de.cdaut.dbtapp.navigation.BottomNavigationItem
-
-
-@Preview
-@Composable
-private fun BottomNavigationBar() {
- var navigationSelectedItem by remember {
- mutableIntStateOf(
- BottomNavigationItem().bottomNavigationItems()
- .find { item -> item.label == "Home" }!!.idx
- )
- }
- val navController = rememberNavController()
-
- Scaffold(
- modifier = Modifier.fillMaxSize(),
- bottomBar = {
- NavigationBar {
- BottomNavigationItem().bottomNavigationItems().sortedBy { item -> item.idx }
- .forEachIndexed { index, item ->
- NavigationBarItem(
- selected = index == navigationSelectedItem,
- label = {
- if (index == navigationSelectedItem) {
- Text(item.label)
- }
- },
- icon = {
- Icon(
- item.icon,
- contentDescription = item.label
- )
- },
- onClick = {
- navigationSelectedItem = index
- navController.navigate(item.route) {
- popUpTo(navController.graph.findStartDestination().id)
- launchSingleTop = true
- restoreState = true
- }
- }
- )
- }
- }
- }
- ) { paddingVals ->
- Text("Test $paddingVals")
- }
-}
\ No newline at end of file
diff --git a/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavigationBar.kt b/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavigationBar.kt
new file mode 100644
index 0000000..5513015
--- /dev/null
+++ b/DBTApp/app/src/main/java/de/cdaut/dbtapp/components/BottomNavigationBar.kt
@@ -0,0 +1,62 @@
+package de.cdaut.dbtapp.components
+
+import androidx.compose.material3.Icon
+import androidx.compose.material3.NavigationBar
+import androidx.compose.material3.NavigationBarItem
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableIntStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.platform.LocalContext
+import androidx.navigation.NavController
+import androidx.navigation.NavGraph.Companion.findStartDestination
+import de.cdaut.dbtapp.navigation.BottomNavigationItem
+
+
+@Composable
+fun BottomNavigationBar(navController: NavController) {
+ var context = LocalContext.current
+ //remember the currently selected view
+ var navigationSelectedItem by remember {
+ mutableIntStateOf(
+ //default view is home
+ BottomNavigationItem().bottomNavigationItems(ctx = context)
+ .find { item -> item.label == "Home" }!!.idx
+ )
+ }
+
+ NavigationBar {
+ //Create an entry in the bottom bar for each view
+ BottomNavigationItem().bottomNavigationItems(ctx = context).sortedBy { item -> item.idx }
+ .forEachIndexed { index, item ->
+ NavigationBarItem(
+ selected = index == navigationSelectedItem,
+ //label is only visible iff item is selected
+ label = {
+ if (index == navigationSelectedItem) {
+ Text(item.label)
+ }
+ },
+ icon = {
+ Icon(
+ item.icon,
+ contentDescription = item.label
+ )
+ },
+ //navigate to the target view
+ onClick = {
+ navigationSelectedItem = index
+ navController.navigate(item.route) {
+ popUpTo(navController.graph.findStartDestination().id) {
+ saveState = true
+ }
+ launchSingleTop = true
+ restoreState = true
+ }
+ }
+ )
+ }
+ }
+}
diff --git a/DBTApp/app/src/main/java/de/cdaut/dbtapp/navigation/BottomNavigationItem.kt b/DBTApp/app/src/main/java/de/cdaut/dbtapp/navigation/BottomNavigationItem.kt
index 375ba6a..2d3bf49 100644
--- a/DBTApp/app/src/main/java/de/cdaut/dbtapp/navigation/BottomNavigationItem.kt
+++ b/DBTApp/app/src/main/java/de/cdaut/dbtapp/navigation/BottomNavigationItem.kt
@@ -1,16 +1,16 @@
package de.cdaut.dbtapp.navigation
-import android.content.res.Resources
+import android.content.Context
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.MenuBook
import androidx.compose.material.icons.filled.CalendarToday
import androidx.compose.material.icons.filled.Checklist
import androidx.compose.material.icons.filled.Home
-import androidx.compose.material.icons.filled.MenuBook
import androidx.compose.material.icons.outlined.Star
import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.platform.LocalContext
+import androidx.core.content.ContextCompat.getString
import de.cdaut.dbtapp.R
-import de.cdaut.dbtapp.navigation.BottomNavigationItem
data class BottomNavigationItem(
val label: String = "",
@@ -18,34 +18,34 @@ data class BottomNavigationItem(
val route: String = "",
val idx: Int = 0
) {
- fun bottomNavigationItems(): List {
+ fun bottomNavigationItems(ctx: Context): List {
return listOf(
BottomNavigationItem(
- label = Resources.getSystem().getString(R.string.label_tracking),
+ label = getString(ctx, R.string.label_tracking),
icon = Icons.Filled.CalendarToday,
route = Screens.Tracking.route,
idx = 0
),
BottomNavigationItem(
- label = Resources.getSystem().getString(R.string.label_skillslist),
+ label = getString(ctx, R.string.label_skillslist),
icon = Icons.AutoMirrored.Filled.MenuBook,
route = Screens.Skillslist.route,
idx = 1
),
BottomNavigationItem(
- label = Resources.getSystem().getString(R.string.label_home),
+ label = getString(ctx, R.string.label_home),
icon = Icons.Filled.Home,
route = Screens.Home.route,
idx = 2
),
BottomNavigationItem(
- label = Resources.getSystem().getString(R.string.label_favourites),
+ label = getString(ctx, R.string.label_favourites),
icon = Icons.Outlined.Star,
route = Screens.Favourites.route,
idx = 3
),
BottomNavigationItem(
- label = Resources.getSystem().getString(R.string.label_skillschains),
+ label = getString(ctx, R.string.label_skillschains),
icon = Icons.Filled.Checklist,
route = Screens.Skillschains.route,
idx = 4
diff --git a/DBTApp/app/src/main/res/values-de/strings.xml b/DBTApp/app/src/main/res/values-de/strings.xml
index 7873163..6c2bae3 100644
--- a/DBTApp/app/src/main/res/values-de/strings.xml
+++ b/DBTApp/app/src/main/res/values-de/strings.xml
@@ -6,4 +6,5 @@
Tracking
Favoriten
Skillsketten
+ Notfallknopf
\ No newline at end of file
diff --git a/DBTApp/app/src/main/res/values/strings.xml b/DBTApp/app/src/main/res/values/strings.xml
index 99eb4dd..1f3ac30 100644
--- a/DBTApp/app/src/main/res/values/strings.xml
+++ b/DBTApp/app/src/main/res/values/strings.xml
@@ -5,4 +5,5 @@
Tracking
Favourites
Skills Chains
+ Emergency Button
\ No newline at end of file