11package com.example.presentaion.view
22
3+ import androidx.compose.foundation.Image
4+ import androidx.compose.foundation.layout.Arrangement
35import androidx.compose.foundation.layout.Column
6+ import androidx.compose.foundation.layout.Spacer
7+ import androidx.compose.foundation.layout.fillMaxSize
8+ import androidx.compose.foundation.layout.fillMaxWidth
9+ import androidx.compose.foundation.layout.height
10+ import androidx.compose.foundation.layout.padding
11+ import androidx.compose.foundation.layout.size
412import androidx.compose.material.Button
5- import androidx.compose.material.OutlinedTextField
13+ import androidx.compose.material.ButtonDefaults
14+ import androidx.compose.material.Icon
615import androidx.compose.material.Text
16+ import androidx.compose.material.icons.Icons
17+ import androidx.compose.material.icons.filled.Send
718import androidx.compose.runtime.Composable
8- import androidx.compose.runtime.State
19+ import androidx.compose.runtime.MutableState
920import androidx.compose.runtime.mutableStateOf
1021import androidx.compose.runtime.remember
22+ import androidx.compose.ui.Alignment
23+ import androidx.compose.ui.Modifier
24+ import androidx.compose.ui.graphics.Color
25+ import androidx.compose.ui.res.painterResource
26+ import androidx.compose.ui.tooling.preview.Preview
27+ import androidx.compose.ui.unit.dp
28+ import androidx.compose.ui.unit.sp
29+ import androidx.lifecycle.viewmodel.compose.viewModel
30+ import com.example.presentaion.R
31+ import com.example.presentaion.ui_component.SearchBar
1132import com.example.presentaion.viewmodel.FireStoreViewModel
1233
1334@Composable
1435fun MainScreen (viewModel : FireStoreViewModel ) {
1536 val roomId = remember { mutableStateOf(" " ) }
16- Column () {
17- SearchBar (roomId) {
18- roomId.value = it
19- }
20- Button (onClick = { viewModel.getRoomInfo(roomId.value, false ) }) {
21- Text (text = " Enter" )
22- }
23- Button (onClick = { viewModel.getRoomInfo(roomId.value, true ) }) {
24- Text (text = " Join" )
25- }
37+ Column (
38+ modifier = Modifier .fillMaxSize(),
39+ horizontalAlignment = Alignment .CenterHorizontally ,
40+ verticalArrangement = Arrangement .Center
41+ ) {
42+ LogoImage ()
43+ Spacer (modifier = Modifier .padding(vertical = 50 .dp))
44+ InputContent (roomId, viewModel)
2645 }
2746}
2847
2948@Composable
30- fun SearchBar (
31- state : State <String >,
32- onValueChange : (String ) -> Unit
49+ fun LogoImage () {
50+ Image (
51+ modifier = Modifier .size(200 .dp),
52+ painter = painterResource(id = R .drawable.webrtc),
53+ contentDescription = " Logo"
54+ )
55+ }
56+
57+ @Composable
58+ private fun InputContent (
59+ roomId : MutableState <String >,
60+ viewModel : FireStoreViewModel
3361) {
34- OutlinedTextField (value = state.value, onValueChange = onValueChange)
62+ SearchBar (modifier = Modifier
63+ .fillMaxWidth()
64+ .padding(horizontal = 40 .dp),
65+ state = roomId,
66+ onValueChange = { roomId.value = it }) {
67+ Text (text = " Room" )
68+ }
69+ Spacer (modifier = Modifier .padding(vertical = 20 .dp))
70+ Button (
71+ modifier = Modifier
72+ .fillMaxWidth()
73+ .height(50 .dp)
74+ .padding(horizontal = 40 .dp),
75+ onClick = { viewModel.getRoomInfo(roomId.value, false ) },
76+ colors = ButtonDefaults .buttonColors(backgroundColor = Color .Blue )
77+ ) {
78+ Icon (imageVector = Icons .Filled .Send , contentDescription = " " , tint = Color .White )
79+ Text (text = " Start" , color = Color .White , fontSize = 20 .sp)
80+ }
81+ Spacer (modifier = Modifier .padding(vertical = 10 .dp))
82+ Button (modifier = Modifier
83+ .fillMaxWidth()
84+ .height(50 .dp)
85+ .padding(horizontal = 40 .dp),
86+ colors = ButtonDefaults .buttonColors(backgroundColor = Color .Blue ),
87+ onClick = { viewModel.getRoomInfo(roomId.value, true ) }) {
88+ Text (text = " Join" , color = Color .White , fontSize = 20 .sp)
89+ }
3590}
91+
92+ @Preview
93+ @Composable
94+ fun MainScreenPreview () {
95+ MainScreen (viewModel = viewModel())
96+ }
0 commit comments