Skip to content

Commit d93c496

Browse files
authored
Merge pull request #6 from wingsum93/develop
Add change theme function: click the sun icon
2 parents ec3652b + 73ec8f6 commit d93c496

File tree

3 files changed

+80
-55
lines changed

3 files changed

+80
-55
lines changed

app/src/main/java/com/chatgptlite/wanted/MainActivity.kt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@ class MainActivity : ComponentActivity() {
6363
focusManager.clearFocus()
6464
}
6565
}
66-
67-
ChatGPTLiteTheme() {
66+
val darkTheme = remember(key1 = "darkTheme") {
67+
mutableStateOf(true)
68+
}
69+
ChatGPTLiteTheme(darkTheme.value) {
6870
Surface(
6971
color = MaterialTheme.colorScheme.background,
7072
) {
@@ -79,18 +81,23 @@ class MainActivity : ComponentActivity() {
7981
scope.launch {
8082
drawerState.close()
8183
}
84+
},
85+
onIconClicked = {
86+
darkTheme.value = !darkTheme.value
8287
}
8388
) {
84-
Column( modifier = Modifier
85-
.fillMaxSize()) {
86-
AppBar (onClickMenu = {
87-
scope.launch {
88-
drawerState.open()
89-
}
90-
})
91-
Divider()
92-
Conversation()
93-
}
89+
Column(
90+
modifier = Modifier
91+
.fillMaxSize()
92+
) {
93+
AppBar(onClickMenu = {
94+
scope.launch {
95+
drawerState.open()
96+
}
97+
})
98+
Divider()
99+
Conversation()
100+
}
94101
}
95102
}
96103
}

app/src/main/java/com/chatgptlite/wanted/ui/common/AppDrawer.kt

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,21 @@ package com.chatgptlite.wanted.ui.common
33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background
55
import androidx.compose.foundation.clickable
6-
import androidx.compose.foundation.layout.*
6+
import androidx.compose.foundation.layout.Arrangement
7+
import androidx.compose.foundation.layout.Box
8+
import androidx.compose.foundation.layout.Column
9+
import androidx.compose.foundation.layout.ColumnScope
10+
import androidx.compose.foundation.layout.Row
11+
import androidx.compose.foundation.layout.Spacer
12+
import androidx.compose.foundation.layout.WindowInsets
13+
import androidx.compose.foundation.layout.fillMaxSize
14+
import androidx.compose.foundation.layout.fillMaxWidth
15+
import androidx.compose.foundation.layout.height
16+
import androidx.compose.foundation.layout.heightIn
17+
import androidx.compose.foundation.layout.padding
18+
import androidx.compose.foundation.layout.size
19+
import androidx.compose.foundation.layout.statusBars
20+
import androidx.compose.foundation.layout.windowInsetsTopHeight
721
import androidx.compose.foundation.lazy.LazyColumn
822
import androidx.compose.foundation.shape.CircleShape
923
import androidx.compose.foundation.shape.RoundedCornerShape
@@ -13,7 +27,11 @@ import androidx.compose.material.icons.filled.Message
1327
import androidx.compose.material.icons.filled.Settings
1428
import androidx.compose.material.icons.filled.WbSunny
1529
import androidx.compose.material.icons.outlined.AddComment
16-
import androidx.compose.material3.*
30+
import androidx.compose.material3.Divider
31+
import androidx.compose.material3.Icon
32+
import androidx.compose.material3.IconButton
33+
import androidx.compose.material3.MaterialTheme
34+
import androidx.compose.material3.Text
1735
import androidx.compose.runtime.Composable
1836
import androidx.compose.runtime.collectAsState
1937
import androidx.compose.runtime.getValue
@@ -38,47 +56,47 @@ import com.chatgptlite.wanted.constants.urlToImageAuthor
3856
import com.chatgptlite.wanted.helpers.UrlLauncher
3957
import com.chatgptlite.wanted.models.ConversationModel
4058
import com.chatgptlite.wanted.ui.conversations.ConversationViewModel
41-
import com.chatgptlite.wanted.ui.theme.ChatGPTLiteTheme
4259
import kotlinx.coroutines.launch
4360

4461
@Composable
4562
fun AppDrawer(
4663
onChatClicked: (String) -> Unit,
4764
onNewChatClicked: () -> Unit,
4865
conversationViewModel: ConversationViewModel = hiltViewModel(),
66+
onIconClicked: () -> Unit = {}
4967
) {
5068
val context = LocalContext.current
5169

52-
ChatGPTLiteTheme() {
53-
Column(
54-
modifier = Modifier
55-
.fillMaxSize()
56-
.background(MaterialTheme.colorScheme.background)
70+
Column(
71+
modifier = Modifier
72+
.fillMaxSize()
73+
.background(MaterialTheme.colorScheme.background)
74+
) {
75+
Spacer(Modifier.windowInsetsTopHeight(WindowInsets.statusBars))
76+
DrawerHeader(clickAction = onIconClicked)
77+
DividerItem()
78+
DrawerItemHeader("Chats")
79+
ChatItem("New Chat", Icons.Outlined.AddComment, false) {
80+
onNewChatClicked()
81+
conversationViewModel.newConversation()
82+
}
83+
HistoryConversations(onChatClicked)
84+
DividerItem(modifier = Modifier.padding(horizontal = 28.dp))
85+
DrawerItemHeader("Settings")
86+
ChatItem("Settings", Icons.Filled.Settings, false) { onChatClicked("Settings") }
87+
ProfileItem(
88+
"lambiengcode (author)",
89+
urlToImageAuthor,
5790
) {
58-
Spacer(Modifier.windowInsetsTopHeight(WindowInsets.statusBars))
59-
DrawerHeader()
60-
DividerItem()
61-
DrawerItemHeader("Chats")
62-
ChatItem("New Chat", Icons.Outlined.AddComment, false) {
63-
onNewChatClicked()
64-
conversationViewModel.newConversation()
65-
}
66-
HistoryConversations(onChatClicked)
67-
DividerItem(modifier = Modifier.padding(horizontal = 28.dp))
68-
DrawerItemHeader("Settings")
69-
ChatItem("Settings", Icons.Filled.Settings, false) { onChatClicked("Settings") }
70-
ProfileItem(
71-
"lambiengcode (author)",
72-
urlToImageAuthor,
73-
) {
74-
UrlLauncher().openUrl(context = context, urlToGithub)
75-
}
91+
UrlLauncher().openUrl(context = context, urlToGithub)
7692
}
7793
}
7894
}
7995

8096
@Composable
81-
private fun DrawerHeader() {
97+
private fun DrawerHeader(
98+
clickAction: () -> Unit = {}
99+
) {
82100
val paddingSizeModifier = Modifier
83101
.padding(start = 16.dp, top = 16.dp, bottom = 16.dp)
84102
.size(34.dp)
@@ -113,6 +131,7 @@ private fun DrawerHeader() {
113131

114132
IconButton(
115133
onClick = {
134+
clickAction.invoke()
116135
},
117136
) {
118137
Icon(

app/src/main/java/com/chatgptlite/wanted/ui/common/AppScaffold.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import androidx.compose.runtime.rememberCoroutineScope
88
import androidx.hilt.navigation.compose.hiltViewModel
99
import com.chatgptlite.wanted.ui.conversations.ConversationViewModel
1010
import com.chatgptlite.wanted.ui.theme.BackGroundColor
11-
import com.chatgptlite.wanted.ui.theme.ChatGPTLiteTheme
1211
import kotlinx.coroutines.launch
1312

1413
//import androidx.compose.material3.ModalDrawerSheet
1514

1615
@SuppressLint("CoroutineCreationDuringComposition")
1716
@OptIn(ExperimentalMaterial3Api::class)
1817
@Composable
19-
fun AppScaffold (
18+
fun AppScaffold(
2019
drawerState: DrawerState = rememberDrawerState(initialValue = Closed),
2120
onChatClicked: (String) -> Unit,
2221
onNewChatClicked: () -> Unit,
22+
onIconClicked: () -> Unit = {},
2323
conversationViewModel: ConversationViewModel = hiltViewModel(),
2424
content: @Composable () -> Unit,
2525
) {
@@ -29,19 +29,18 @@ fun AppScaffold (
2929
conversationViewModel.initialize()
3030
}
3131

32+
ModalNavigationDrawer(
33+
drawerState = drawerState,
34+
drawerContent = {
35+
ModalDrawerSheet(drawerContainerColor = BackGroundColor) {
36+
AppDrawer(
37+
onChatClicked = onChatClicked,
38+
onNewChatClicked = onNewChatClicked,
39+
onIconClicked = onIconClicked,
40+
)
41+
}
42+
},
43+
content = content
44+
)
3245

33-
ChatGPTLiteTheme() {
34-
ModalNavigationDrawer(
35-
drawerState = drawerState,
36-
drawerContent = {
37-
ModalDrawerSheet (drawerContainerColor = BackGroundColor) {
38-
AppDrawer (
39-
onChatClicked = onChatClicked,
40-
onNewChatClicked = onNewChatClicked,
41-
)
42-
}
43-
},
44-
content = content
45-
)
46-
}
4746
}

0 commit comments

Comments
 (0)