Skip to content

Commit

Permalink
now with better looking icons and 33% less crashes
Browse files Browse the repository at this point in the history
  • Loading branch information
prapooskur committed Jan 20, 2024
1 parent 48e1309 commit 8b5f7a7
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 10 deletions.
22 changes: 18 additions & 4 deletions android/app/src/main/java/com/pras/slugcourses/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,44 @@ package com.pras.slugcourses

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.navigation.NavController
import androidx.navigation.NavHostController
import com.pras.slugcourses.api.Course
import com.pras.slugcourses.api.SupabaseQuery
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

@Composable
fun HomeScreen(navController: NavController) {
var response by remember { mutableStateOf(listOf<Course>()) }
var dataLoaded by remember { mutableStateOf(false) }
val coroutineScope = rememberCoroutineScope()
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
items(response.size) { course ->
Text(text = response[course].department+" "+response[course].course_number)
if (dataLoaded) {
items(response.size) { course ->
Text(text = response[course].department + " " + response[course].course_number)
}
} else {
item {
CircularProgressIndicator()
}
}
}
LaunchedEffect(Unit) {
response = SupabaseQuery(2240)
withContext(Dispatchers.IO) {
response = SupabaseQuery(2240)
dataLoaded = true
}
}
}
57 changes: 51 additions & 6 deletions android/app/src/main/java/com/pras/slugcourses/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.pras.slugcourses

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
Expand All @@ -14,7 +15,8 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.outlined.Home
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBar
Expand All @@ -28,13 +30,17 @@ import androidx.compose.runtime.MutableIntState
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.NavController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.pras.slugcourses.ui.theme.SlugCoursesTheme

private const val TAG = "MainActivity"

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -87,12 +93,36 @@ fun GreetingPreview() {
}
}

data class BottomNavigationItem(
val name: String,
val route: String,
val icon: ImageVector,
val selectedIcon: ImageVector,
val iconDescription: String
)

const val DELAYTIME: Float = 350F
const val FADETIME: Float = 200F
@Composable
fun Init(startDestination: String) {
val navController = rememberNavController()
val index = remember { mutableIntStateOf(0) }
val itemList = listOf(
BottomNavigationItem(
name = "Home",
route = "home",
selectedIcon = Icons.Filled.Home,
icon = Icons.Outlined.Home,
iconDescription = "Home"
),
BottomNavigationItem(
name = "Chat",
route = "chat",
selectedIcon = ImageVector.vectorResource(R.drawable.chat_filled),
icon = ImageVector.vectorResource(R.drawable.chat_outlined),
iconDescription = "Favorite"
)
)


Scaffold(
Expand Down Expand Up @@ -123,22 +153,37 @@ fun Init(startDestination: String) {
}
},
bottomBar = {
BottomNavigationBar(navController, listOf("home", "chat"), index)
BottomNavigationBar(navController, itemList, index)
}
)
}

@Composable
fun BottomNavigationBar(navController: NavController, items: List<String>, selectedItem: MutableIntState) {
fun BottomNavigationBar(navController: NavController, items: List<BottomNavigationItem>, selectedItem: MutableIntState) {
NavigationBar {
items.forEachIndexed { index, item ->
NavigationBarItem(
icon = { Icon(Icons.Filled.Favorite, contentDescription = item) },
label = { Text(item) },
icon = {
if (selectedItem.intValue == index) {
Icon(
imageVector = item.selectedIcon,
contentDescription = item.iconDescription
)
} else {
Icon(
imageVector = item.icon,
contentDescription = item.iconDescription
)
}
},
label = { Text(item.name) },
selected = selectedItem.intValue == index,
onClick = {
selectedItem.intValue = index
navController.navigate(item) {

Log.d(TAG, index.toString())
Log.d(TAG, selectedItem.intValue.toString())
navController.navigate(item.route) {
popUpTo(navController.graph.startDestinationId)
launchSingleTop = true
}
Expand Down
11 changes: 11 additions & 0 deletions android/app/src/main/res/drawable/chat_filled.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="#FFFFFF"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M80,880L80,160Q80,127 103.5,103.5Q127,80 160,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L240,720L80,880ZM240,560L560,560L560,480L240,480L240,560ZM240,440L720,440L720,360L240,360L240,440ZM240,320L720,320L720,240L240,240L240,320Z"/>
</vector>
11 changes: 11 additions & 0 deletions android/app/src/main/res/drawable/chat_outlined.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="#FFFFFF"
android:autoMirrored="true">
<path
android:fillColor="@android:color/white"
android:pathData="M240,560L560,560L560,480L240,480L240,560ZM240,440L720,440L720,360L240,360L240,440ZM240,320L720,320L720,240L240,240L240,320ZM80,880L80,160Q80,127 103.5,103.5Q127,80 160,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L240,720L80,880ZM206,640L800,640Q800,640 800,640Q800,640 800,640L800,160Q800,160 800,160Q800,160 800,160L160,160Q160,160 160,160Q160,160 160,160L160,685L206,640ZM160,640L160,640L160,160Q160,160 160,160Q160,160 160,160L160,160Q160,160 160,160Q160,160 160,160L160,640Q160,640 160,640Q160,640 160,640L160,640Z"/>
</vector>

0 comments on commit 8b5f7a7

Please sign in to comment.