Skip to content

Commit 345bcaa

Browse files
committed
targetSdk updated
1 parent d7f3447 commit 345bcaa

File tree

8 files changed

+214
-64
lines changed

8 files changed

+214
-64
lines changed

app/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId "com.bera.collegesearch"
1414
minSdk 24
1515
targetSdk 34
16-
versionCode 7
17-
versionName "2.0"
16+
versionCode 8
17+
versionName "3.0"
1818

1919
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2020
vectorDrawables {
@@ -105,4 +105,7 @@ dependencies {
105105
//Coil
106106
implementation "io.coil-kt:coil-compose:2.4.0"
107107

108+
//Extended Icons
109+
implementation("androidx.compose.material:material-icons-extended:1.5.0")
110+
108111
}

app/src/main/java/com/bera/collegesearch/MainActivity.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.bera.collegesearch
33
import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
6+
import androidx.compose.foundation.isSystemInDarkTheme
67
import androidx.compose.foundation.layout.fillMaxSize
78
import androidx.compose.material3.Surface
89
import androidx.compose.runtime.LaunchedEffect
@@ -31,15 +32,21 @@ class MainActivity : ComponentActivity() {
3132
super.onCreate(savedInstanceState)
3233
connectivityObserver = ConnectivityObserver(applicationContext)
3334
setContent {
34-
CollegeSearchTheme {
35+
36+
val systemDefault = isSystemInDarkTheme()
37+
var isDarkMode by remember { mutableStateOf(systemDefault) }
38+
CollegeSearchTheme(darkTheme = isDarkMode) {
3539

3640
val status by connectivityObserver.observe()
3741
.collectAsState(initial = ConnectivityStatus.Unavailable)
3842
Surface(
3943
modifier = Modifier.fillMaxSize(),
4044
) {
4145
when(status) {
42-
ConnectivityStatus.Available -> Navigation()
46+
ConnectivityStatus.Available -> Navigation(isDarkMode) {
47+
isDarkMode = !isDarkMode
48+
}
49+
4350
else -> {
4451
var showError by remember {
4552
mutableStateOf(false)
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.bera.collegesearch.components
2+
3+
import androidx.compose.animation.core.AnimationSpec
4+
import androidx.compose.animation.core.animateDpAsState
5+
import androidx.compose.animation.core.tween
6+
import androidx.compose.foundation.BorderStroke
7+
import androidx.compose.foundation.background
8+
import androidx.compose.foundation.border
9+
import androidx.compose.foundation.clickable
10+
import androidx.compose.foundation.layout.Box
11+
import androidx.compose.foundation.layout.Row
12+
import androidx.compose.foundation.layout.height
13+
import androidx.compose.foundation.layout.offset
14+
import androidx.compose.foundation.layout.padding
15+
import androidx.compose.foundation.layout.size
16+
import androidx.compose.foundation.layout.width
17+
import androidx.compose.foundation.shape.CircleShape
18+
import androidx.compose.material.icons.Icons
19+
import androidx.compose.material.icons.filled.LightMode
20+
import androidx.compose.material.icons.filled.Nightlight
21+
import androidx.compose.material3.Icon
22+
import androidx.compose.material3.MaterialTheme
23+
import androidx.compose.runtime.Composable
24+
import androidx.compose.runtime.getValue
25+
import androidx.compose.ui.Alignment
26+
import androidx.compose.ui.Modifier
27+
import androidx.compose.ui.draw.clip
28+
import androidx.compose.ui.graphics.Shape
29+
import androidx.compose.ui.unit.Dp
30+
import androidx.compose.ui.unit.dp
31+
32+
@Composable
33+
fun ThemeSwitcher(
34+
darkTheme: Boolean = false,
35+
size: Dp = 150.dp,
36+
iconSize: Dp = size / 3,
37+
padding: Dp = 10.dp,
38+
borderWidth: Dp = 1.dp,
39+
parentShape: Shape = CircleShape,
40+
toggleShape: Shape = CircleShape,
41+
animationSpec: AnimationSpec<Dp> = tween(durationMillis = 300),
42+
onClick: () -> Unit
43+
) {
44+
val offset by animateDpAsState(
45+
targetValue = if (darkTheme) 0.dp else size,
46+
animationSpec = animationSpec, label = ""
47+
)
48+
49+
Box(modifier = Modifier
50+
.width(size * 2)
51+
.height(size)
52+
.clip(shape = parentShape)
53+
.clickable { onClick() }
54+
.background(MaterialTheme.colorScheme.secondaryContainer)
55+
) {
56+
Box(
57+
modifier = Modifier
58+
.size(size)
59+
.offset(x = offset)
60+
.padding(all = padding)
61+
.clip(shape = toggleShape)
62+
.background(MaterialTheme.colorScheme.primary)
63+
) {}
64+
Row(
65+
modifier = Modifier
66+
.border(
67+
border = BorderStroke(
68+
width = borderWidth,
69+
color = MaterialTheme.colorScheme.primary
70+
),
71+
shape = parentShape
72+
)
73+
) {
74+
Box(
75+
modifier = Modifier.size(size),
76+
contentAlignment = Alignment.Center
77+
) {
78+
Icon(
79+
modifier = Modifier.size(iconSize),
80+
imageVector = Icons.Default.Nightlight,
81+
contentDescription = "Theme Icon",
82+
tint = if (darkTheme) MaterialTheme.colorScheme.secondaryContainer
83+
else MaterialTheme.colorScheme.primary
84+
)
85+
}
86+
Box(
87+
modifier = Modifier.size(size),
88+
contentAlignment = Alignment.Center
89+
) {
90+
Icon(
91+
modifier = Modifier.size(iconSize),
92+
imageVector = Icons.Default.LightMode,
93+
contentDescription = "Theme Icon",
94+
tint = if (darkTheme) MaterialTheme.colorScheme.primary
95+
else MaterialTheme.colorScheme.secondaryContainer
96+
)
97+
}
98+
}
99+
}
100+
}

app/src/main/java/com/bera/collegesearch/navigation/Navigation.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ import com.bera.collegesearch.screens.home.HomeScreen
1414

1515

1616
@Composable
17-
fun Navigation() {
17+
fun Navigation(isDarkMode: Boolean, onDarkModeToggle: () -> Unit) {
1818
val navController = rememberNavController()
1919
NavHost(navController = navController, startDestination = Routes.HomeScreen.route) {
2020
composable(Routes.HomeScreen.route) {
21-
HomeScreen(navController = navController)
21+
HomeScreen(
22+
navController = navController,
23+
isDarkMode = isDarkMode,
24+
onDarkModeToggle = onDarkModeToggle
25+
)
2226
}
2327
composable(Routes.CollegeScreen.route + "/{category}", listOf(navArgument("category") {
2428
type = NavType.StringType

app/src/main/java/com/bera/collegesearch/screens/cutoffsbyrank/CBRViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.runtime.setValue
66
import androidx.lifecycle.ViewModel
77
import androidx.lifecycle.viewModelScope
88
import com.bera.collegesearch.models.CutoffItem
9+
import com.bera.collegesearch.repository.CutoffRepository
910
import com.bera.collegesearch.use_cases.GetCutoffsUseCase
1011
import com.bera.collegesearch.utils.Constants.IIT_STRING
1112
import com.bera.collegesearch.utils.Constants.IIT_STRING_1

0 commit comments

Comments
 (0)