diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeHeader.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeHeader.kt new file mode 100644 index 0000000..714d484 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeHeader.kt @@ -0,0 +1,89 @@ +package com.pwhs.quickmem.presentation.homescreen.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Notifications +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.pwhs.quickmem.presentation.app.home.component.home.SearchTextField + +@Composable +fun HomeHeader( + Onclick: () -> Unit +) { + Box( + modifier = Modifier + .background( + Color(0xFF5E8DF5), + shape = RoundedCornerShape(bottomStart = 32.dp, bottomEnd = 32.dp) + ) + .padding(16.dp) + ) { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = "QuickMem", + color = Color.White, + fontWeight = FontWeight.Bold, + fontSize = 32.sp + ) + + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Button( + onClick = Onclick, + modifier = Modifier.padding(end = 8.dp), + shape = RoundedCornerShape(8.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFCBB237)) + ) { + Text("Free trial") + } + + IconButton( + onClick = { + + } + ) { + Icon( + imageVector = Icons.Default.Notifications, + contentDescription = "Notifications", + tint = Color.White + ) + } + } + } + SearchTextField() + } + } +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt index 7d02b9b..1b82d26 100644 --- a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt @@ -1,22 +1,59 @@ package com.pwhs.quickmem.presentation.app.home +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.compose.foundation.rememberScrollState +import com.pwhs.quickmem.presentation.app.home.component.achiverment.AchievementsSection +import com.pwhs.quickmem.presentation.app.home.component.categories.CategoriesSection +import com.pwhs.quickmem.presentation.app.home.component.classes.ClassesSection +import com.pwhs.quickmem.presentation.app.home.component.folder.FoldersSections +import com.pwhs.quickmem.presentation.app.home.component.sets.SetsSections +import com.pwhs.quickmem.presentation.homescreen.components.HomeHeader import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph +import com.ramcosta.composedestinations.generated.destinations.SearchScreenDestination +import com.ramcosta.composedestinations.navigation.DestinationsNavigator @Composable @Destination -fun HomeScreen(modifier: Modifier = Modifier) { +fun HomeScreen( + modifier: Modifier = Modifier, + navigator: DestinationsNavigator, + viewModel: HomeViewModel = hiltViewModel() +) { Scaffold { innerPadding -> Column( - modifier = modifier.padding(innerPadding), + modifier = Modifier + .fillMaxSize() + .background(Color.White) + .verticalScroll(rememberScrollState()) + .padding(innerPadding), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp) ) { - Text("Home Screen") + HomeHeader( + Onclick = { + navigator.navigate(SearchScreenDestination) + } + ) + SetsSections() + FoldersSections() + ClassesSection() + AchievementsSection() + CategoriesSection() } } } \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreenViewModel.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreenViewModel.kt new file mode 100644 index 0000000..50664e6 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreenViewModel.kt @@ -0,0 +1,12 @@ +package com.pwhs.quickmem.presentation.app.home + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor( + +) : ViewModel() { + +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/StartForBegin.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/StartForBegin.kt new file mode 100644 index 0000000..a50d1dd --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/StartForBegin.kt @@ -0,0 +1,99 @@ +package com.pwhs.quickmem.presentation.app.home.component + +import androidx.annotation.DrawableRes +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.pwhs.quickmem.R + +@Composable +fun StartForBegin() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + ) { + Text( + text = "Start for begin", + style = typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ), + modifier = Modifier.padding(bottom = 24.dp), + textAlign = TextAlign.Start + ) + + ActionButton( + title = "Create a flashcard for yourself", + iconResId = R.drawable.onboarding1, + onClick = { } + ) + + Spacer(modifier = Modifier.height(16.dp)) + + ActionButton( + title = "Find a topic, class", + iconResId = R.drawable.ic_launcher_foreground, + onClick = { } + ) + } +} + +@Composable +fun ActionButton( + title: String, + @DrawableRes iconResId: Int, + onClick: () -> Unit +) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .height(60.dp) + .clip(RoundedCornerShape(8.dp)) + .background(Color(0xFFF0F0F0)) + .clickable(onClick = onClick) + .padding(horizontal = 16.dp) + ) { + Image( + painter = painterResource(id = iconResId), + contentDescription = null, + contentScale = ContentScale.Fit, + modifier = Modifier.size(40.dp) + ) + Spacer(modifier = Modifier.width(16.dp)) + Text( + text = title, + style = typography.bodyMedium.copy( + fontWeight = FontWeight.Medium, + fontSize = 16.sp + ) + ) + } +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/achiverment/AchievementsSection.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/achiverment/AchievementsSection.kt new file mode 100644 index 0000000..515777e --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/achiverment/AchievementsSection.kt @@ -0,0 +1,151 @@ +package com.pwhs.quickmem.presentation.app.home.component.achiverment + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.CalendarToday +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import java.time.LocalDate +import java.time.YearMonth + +@Composable +fun AchievementsSection() { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.padding(16.dp) + ) { + Text( + text = "Achievement", + style = typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ), + modifier = Modifier.padding(start = 15.dp) + ) + Column( + modifier = Modifier + .fillMaxWidth() + .background(Color.White) + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text( + text = "No streaks right now", + style = typography.bodyLarge.copy( + fontSize = 20.sp, + color = Color.Gray + ) + ) + + Icon( + imageVector = Icons.Default.CalendarToday, + contentDescription = "Calendar Icon", + tint = Color.Gray, + modifier = Modifier.size(40.dp) + ) + + Text( + text = "Study to restart your streak", + style = typography.bodyMedium.copy( + fontSize = 16.sp + ) + ) + CalendarGrid() + } + } +} + + +@Composable +fun CalendarGrid() { + val today = LocalDate.now() + val yearMonth = YearMonth.of(today.year, today.month) + val daysInMonth = yearMonth.lengthOfMonth() + val firstDayOfMonth = yearMonth.atDay(1) + val dayOfWeekOfFirstDay = firstDayOfMonth.dayOfWeek.value + val daysOfWeek = listOf("S", "M", "T", "W", "T", "F", "S") + + val startOffset = (dayOfWeekOfFirstDay + 5) % 7 + + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 30.dp) + ) { + daysOfWeek.forEach { day -> + Text( + text = day, + fontSize = 14.sp, + fontWeight = FontWeight.Bold, + color = Color.Gray, + modifier = Modifier.weight(1f), + textAlign = TextAlign.Center + ) + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + // Tạo lịch + val weeks = mutableListOf>() + val firstWeek = MutableList(startOffset) { null } + (1..(7 - startOffset)).toList() + weeks.add(firstWeek) + var remainingDays = (8 - startOffset..daysInMonth).toList() + while (remainingDays.isNotEmpty()) { + weeks.add(remainingDays.take(7)) + remainingDays = remainingDays.drop(7) + } + + weeks.forEach { week -> + Row( + horizontalArrangement = Arrangement.SpaceEvenly, + modifier = Modifier.fillMaxWidth() + ) { + week.forEach { day -> + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .size(30.dp) + ) { + if (day != null) { + Text( + text = day.toString(), + fontSize = 14.sp, + color = Color.Gray, + textAlign = TextAlign.Center + ) + } + } + } + } + Spacer(modifier = Modifier.height(8.dp)) + } +} + +@Preview(showBackground = true) +@Composable +fun CalendarGridPreview() { + AchievementsSection() +} \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/categories/CategoriesSection.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/categories/CategoriesSection.kt new file mode 100644 index 0000000..11462d0 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/categories/CategoriesSection.kt @@ -0,0 +1,136 @@ +package com.pwhs.quickmem.presentation.app.home.component.categories + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.pwhs.quickmem.R + +@Composable +fun CategoriesSection() { + Column(modifier = Modifier.fillMaxSize()) { + Text( + text = "Categories", + style = typography.titleMedium.copy( + color = Color.White, + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ) + ) + Spacer(modifier = Modifier.height(16.dp)) + + LazyColumn( + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.fillMaxWidth() + ) { + items(categories.chunked(2)) { rowCategories -> + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + for (category in rowCategories) { + CategoryCard( + title = category.title, + icon = painterResource(id = category.iconRes), + backgroundColor = category.backgroundColor + ) + } + } + } + } + } +} + +@Composable +fun CategoryCard( + title: String, + icon: Painter, + backgroundColor: Color +) { + Box( + modifier = Modifier + .width(160.dp) + .height(100.dp) + .clip(RoundedCornerShape(12.dp)) + .background(Color(0xFF2D2D44)) + .clickable { /* Handle click */ } + .padding(12.dp) + .shadow(8.dp, shape = RoundedCornerShape(12.dp)) + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start, + modifier = Modifier.fillMaxSize() + ) { + Box( + modifier = Modifier + .size(48.dp) + .clip(RoundedCornerShape(8.dp)) + .background(backgroundColor), // Màu nền cho icon + contentAlignment = Alignment.Center + ) { + Image( + painter = icon, + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier.size(32.dp) + ) + } + + Spacer(modifier = Modifier.width(12.dp)) + + Text( + text = title, + color = Color.White, + style = typography.bodyMedium.copy( + fontWeight = FontWeight.SemiBold, + fontSize = 16.sp + ) + ) + } + } +} + + +data class Category( + val title: String, + val iconRes: Int, + val backgroundColor: Color +) + +val categories = listOf( + Category("Ngôn ngữ", R.drawable.ic_language, Color(0xFF5B46F0)), + Category("Khoa học", R.drawable.ic_science, Color(0xFF40B5AD)), + Category("Nghệ thuật", R.drawable.ic_art, Color(0xFFFF8E5E)), + Category("Toán học", R.drawable.ic_math, Color(0xFFFFD645)), + Category("Khoa học xã hội", R.drawable.ic_social_science, Color(0xFF5B46F0)) +) diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesCard.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesCard.kt new file mode 100644 index 0000000..e79e514 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesCard.kt @@ -0,0 +1,127 @@ +package com.pwhs.quickmem.presentation.app.home.component.classes + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.AutoAwesomeMotion +import androidx.compose.material.icons.filled.PeopleOutline +import androidx.compose.material.icons.filled.Person +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun ClassesCard( + title: String, + classname: String, + sets: String, + member: String +) { + Box( + modifier = Modifier + .width(250.dp) + .height(150.dp) + .clip(RoundedCornerShape(8.dp)) + .background(Color(0xFFF0F0F0)) + .shadow(4.dp, RoundedCornerShape(8.dp)) + .padding(10.dp) + ) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceBetween + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = title, + style = typography.bodyMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 14.sp + ), + modifier = Modifier.weight(1f) + ) + + Icon( + imageVector = Icons.Default.PeopleOutline, + contentDescription = "People" + ) + } + + Text( + text = classname, + style = typography.bodyMedium + ) + + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Default.AutoAwesomeMotion, + contentDescription = "Sets" + ) + Spacer(modifier = Modifier.width(4.dp)) // Thêm khoảng trống nhỏ + Text( + text = sets, + style = typography.bodyMedium.copy( + fontWeight = FontWeight.Medium, + fontSize = 14.sp + ) + ) + } + + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Default.Person, + contentDescription = "Members" + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + text = member, + style = typography.bodyMedium.copy( + fontWeight = FontWeight.Medium, + fontSize = 14.sp + ) + ) + } + } + } +} + + +@Preview +@Composable +fun PreviewClass() { + ClassesCard( + title = "ETS 2024", + classname = "Anh Ngữ MS.Hoa", + sets = "2 sets", + member = "30 members" + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesSection.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesSection.kt new file mode 100644 index 0000000..773b467 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/classes/ClassesSection.kt @@ -0,0 +1,85 @@ +package com.pwhs.quickmem.presentation.app.home.component.classes + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +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.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun ClassesSection() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(start = 15.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = "Classes", + style = typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ) + ) + Text( + text = "View more", + style = typography.bodyMedium.copy( + color = Color.Blue, + fontSize = 14.sp + ), + modifier = Modifier + .padding(end = 18.dp) + .clickable { + // Hành động khi nhấn "View more" + } + ) + } + Spacer(modifier = Modifier.height(16.dp)) + + LazyRow( + horizontalArrangement = Arrangement.spacedBy(16.dp), + contentPadding = PaddingValues(end = 16.dp, start = 15.dp) + ) { + items(classesList) { classInfo -> + ClassesCard( + title = classInfo.title, + classname = classInfo.className, + sets = classInfo.sets, + member = classInfo.members + ) + } + } + } +} + +data class ClassInfo( + val title: String, + val className: String, + val sets: String, + val members: String +) + +val classesList = listOf( + ClassInfo("ETS 2024", "Anh Ngữ MS.Hoa", "2 sets", "30 members"), + ClassInfo("IELTS Intensive", "IELTS Fighter", "3 sets", "25 members"), + ClassInfo("TOEIC Preparation", "TOEIC Academy", "4 sets", "40 members") +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FolderCard.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FolderCard.kt new file mode 100644 index 0000000..df0ea72 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FolderCard.kt @@ -0,0 +1,134 @@ +package com.pwhs.quickmem.presentation.app.home.component.folder + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Bookmark +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.pwhs.quickmem.R + +@Composable +fun FolderCard( + title: String, + sets: String, + author: String +) { + // Sử dụng Box thay vì Surface + Box( + modifier = Modifier + .width(220.dp) + .height(110.dp) + .clip(RoundedCornerShape(8.dp)) // Bo góc + .background(Color(0xFFF0F0F0)) // Màu nền + .shadow(4.dp, RoundedCornerShape(8.dp)) // Bóng đổ + .padding(10.dp) + ) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceBetween + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Row( + horizontalArrangement = Arrangement.Start, + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(id = R.drawable.ic_launcher_foreground), + contentDescription = null, + modifier = Modifier + .size(24.dp) + .clip(RoundedCornerShape(50)) // Bo góc hình ảnh + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = title, + style = typography.bodySmall.copy( + fontSize = 14.sp, + fontWeight = FontWeight.Bold + ), + ) + } + + IconButton( + onClick = { + // Hành động khi bấm + }, + ) { + Icon( + imageVector = Icons.Default.Bookmark, + contentDescription = "Bookmark" + ) + } + } + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(10.dp), + horizontalArrangement = Arrangement.Start, + verticalAlignment = Alignment.CenterVertically + ) { + Text(text = sets) + + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(start = 5.dp) + ) { + Image( + painter = painterResource(id = R.drawable.ic_launcher_foreground), + contentDescription = null, + modifier = Modifier + .size(24.dp) + .clip(RoundedCornerShape(50)) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = author, + style = typography.bodySmall.copy( + fontSize = 12.sp, + fontWeight = FontWeight.Bold + ), + ) + } + } + } + } +} + +@Preview +@Composable +fun FolderCardPV() { + FolderCard(title = "Animal", sets = "2 sets", author = "Hadao1204") +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FoldersSections.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FoldersSections.kt new file mode 100644 index 0000000..47c58e8 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/folder/FoldersSections.kt @@ -0,0 +1,83 @@ +package com.pwhs.quickmem.presentation.app.home.component.folder + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +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.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun FoldersSections() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(start = 15.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = "Folders", + style = typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ) + ) + Text( + text = "View more", + style = typography.bodyMedium.copy( + color = Color.Blue, + fontSize = 14.sp + ), + modifier = Modifier + .padding(end = 18.dp) + .clickable { + // Xử lý khi nhấn "View more" + } + ) + } + Spacer(modifier = Modifier.height(16.dp)) + + LazyRow( + horizontalArrangement = Arrangement.spacedBy(16.dp), + contentPadding = PaddingValues(end = 16.dp, start = 15.dp) + ) { + items(folderList) { folder -> + FolderCard( + title = folder.title, + sets = folder.sets, + author = folder.author + ) + } + } + } +} + +data class FolderInfo( + val title: String, + val sets: String, + val author: String +) + +val folderList = listOf( + FolderInfo("Animal", "2 sets", "Hadao1204"), + FolderInfo("Plants", "3 sets", "Hana1210"), + FolderInfo("Physics", "5 sets", "Thinguyen") +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/home/SearchTextField.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/home/SearchTextField.kt new file mode 100644 index 0000000..289063a --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/home/SearchTextField.kt @@ -0,0 +1,52 @@ +package com.pwhs.quickmem.presentation.app.home.component.home + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp + +@Composable +fun SearchTextField() { + Box( + modifier = Modifier + .fillMaxWidth() + .height(56.dp) + .clip(RoundedCornerShape(50)) + .background(Color.White) + .shadow(4.dp, RoundedCornerShape(50)) + .clickable { /* Handle click */ } + ) { + TextField( + value = "", + onValueChange = {}, + placeholder = { + Row { + Icon(Icons.Default.Search, contentDescription = null) + Text( + text = "Flashcards, textbooks, question,...", + color = Color.Gray, + modifier = Modifier.padding(start = 8.dp) + ) + } + }, + modifier = Modifier.fillMaxSize(), + singleLine = true + ) + } +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetCard.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetCard.kt new file mode 100644 index 0000000..96733b2 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetCard.kt @@ -0,0 +1,141 @@ +package com.pwhs.quickmem.presentation.app.home.component.sets + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Bookmark +import androidx.compose.material.icons.filled.MoreHoriz +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.pwhs.quickmem.R + +@Composable +fun SetCard( + title: String, + terms: String, + author: String +) { + // Sử dụng Box thay cho Surface + Box( + modifier = Modifier + .width(250.dp) + .height(110.dp) + .clip(RoundedCornerShape(8.dp)) // Bo góc + .background(Color(0xFFF0F0F0)) // Màu nền + .shadow(4.dp, RoundedCornerShape(8.dp)) // Bóng đổ + .padding(10.dp) + ) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceBetween + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = title, + style = MaterialTheme.typography.bodyMedium.copy( + fontWeight = FontWeight.Medium, + fontSize = 14.sp + ), + modifier = Modifier.weight(1f) + ) + + IconButton( + onClick = { + // Thao tác khi nhấn Bookmark + }, + ) { + Icon( + imageVector = Icons.Default.Bookmark, + contentDescription = "Bookmark" + ) + } + } + + Text( + text = terms, + style = MaterialTheme.typography.bodySmall.copy( + fontSize = 10.sp + ) + ) + + Spacer(Modifier.height(8.dp)) + + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + Image( + painter = painterResource(id = R.drawable.ic_launcher_foreground), + contentDescription = null, + modifier = Modifier + .size(24.dp) + .clip(RoundedCornerShape(50)) // Bo góc hình ảnh + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = author, + style = MaterialTheme.typography.bodySmall.copy( + fontSize = 12.sp + ), + ) + } + + IconButton( + onClick = { + // Thao tác khi nhấn More options + }, + ) { + Icon( + imageVector = Icons.Default.MoreHoriz, + contentDescription = "More options" + ) + } + } + } + } +} + +@Preview +@Composable +fun SetCardPreview() { + SetCard( + title = "New Toeic 700 - Test 1 - 2024", + terms = "23 terms", + author = "Hadao04" + ) +} + + diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetsSections.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetsSections.kt new file mode 100644 index 0000000..159ba10 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/component/sets/SetsSections.kt @@ -0,0 +1,95 @@ +package com.pwhs.quickmem.presentation.app.home.component.sets + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MaterialTheme.typography +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.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Preview +@Composable +fun SetsSections() { + Column( + modifier = Modifier + .fillMaxSize() + .padding(start = 15.dp) + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = "Sets", + style = typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + fontSize = 20.sp + ) + ) + + Text( + text = "View more", + style = typography.bodyMedium.copy( + color = Color.Blue, + fontSize = 14.sp + ), + modifier = Modifier + .padding(end = 18.dp) + .clickable { + // Xử lý sự kiện khi nhấn "View more" + } + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + LazyRow( + horizontalArrangement = Arrangement.spacedBy(16.dp), + contentPadding = PaddingValues(end = 16.dp, start = 15.dp) + ) { + items(setsList) { set -> + SetCard( + title = set.title, + terms = set.terms, + author = set.author + ) + } + } + } +} + +@Preview +@Composable +fun PreviewSection(){ + SetsSections() +} + +data class SetInfo( + val title: String, + val terms: String, + val author: String +) + +val setsList = listOf( + SetInfo("New Toeic 700 - Test 1 - 2024", "23 terms", "Hadao04"), + SetInfo("IELTS Reading Practice", "50 terms", "IELTS Fighter"), + SetInfo("Advanced Physics", "45 terms", "SciGuy999") +) + + diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreen.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreen.kt new file mode 100644 index 0000000..a9d8267 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreen.kt @@ -0,0 +1,155 @@ +package com.pwhs.quickmem.presentation.app.search + +import android.annotation.SuppressLint +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.lifecycle.viewmodel.compose.viewModel +import com.pwhs.quickmem.R +import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph +import com.ramcosta.composedestinations.generated.destinations.HomeScreenDestination +import com.ramcosta.composedestinations.generated.destinations.SearchScreenDestination +import com.ramcosta.composedestinations.navigation.DestinationsNavigator + + +@OptIn(ExperimentalMaterial3Api::class) +@Destination +@Composable +fun SearchScreen( + viewModel: SearchScreenViewModel = viewModel(), + navigator: DestinationsNavigator +) { + val searchText by viewModel.searchText + val filteredResults = viewModel.filteredResults + + Scaffold( + topBar = { + TopAppBar( + title = { + TextField( + value = searchText, + onValueChange = { viewModel.onSearchTextChanged(it) }, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(8.dp)), + placeholder = { + Text(text = "Folder, sets, question,....") + }, + leadingIcon = { + Icon(Icons.Filled.Search, contentDescription = "Search") + } + ) + }, + navigationIcon = { + IconButton(onClick = { + navigator.navigate(HomeScreenDestination) { + popUpTo(SearchScreenDestination) { + inclusive = true + launchSingleTop = true + } + } + }) { + Icon(Icons.Default.ArrowBack, contentDescription = "Back") + } + }, + ) + } + ) { innerPadding -> + Box( + modifier = Modifier + .fillMaxSize() + .padding(innerPadding), + contentAlignment = Alignment.Center + ) { + if (searchText.isEmpty()) { + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Text( + text = "What specific topic or keyword in English would you like to explore or discuss?\n\nLet me know, and I can help you with it!", + textAlign = TextAlign.Center, + style = MaterialTheme.typography.bodySmall.copy( + fontSize = 15.sp, + fontWeight = FontWeight.SemiBold + ), + modifier = Modifier.padding(15.dp) + ) + } + } else { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(16.dp) + ) { + items(filteredResults) { result -> + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp) + .clickable { + } + ) { + Icon(Icons.Default.Search, contentDescription = "Search Icon") + Spacer(modifier = Modifier.width(8.dp)) + Text(text = result) + } + } + item { + Spacer(modifier = Modifier.height(16.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "All Search Result", + color = Color.Blue + ) + } + } + } + } + } + } +} diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreenViewModel.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreenViewModel.kt new file mode 100644 index 0000000..db0cd36 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/search/SearchScreenViewModel.kt @@ -0,0 +1,33 @@ +package com.pwhs.quickmem.presentation.app.search + +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel +import androidx.compose.runtime.State +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class SearchScreenViewModel @Inject constructor( + +) : ViewModel() { + + private val _searchText = mutableStateOf("") + val searchText: State = _searchText + + private val searchResults = listOf( + "Android Java Tutorial", + "Android Kotlin Tutorial", + "Android Flutter Tutorial", + "Android React Native Tutorial", + "Android Kotlin/Jetpack Compose Tutorial" + ) + + fun onSearchTextChanged(newText: String) { + _searchText.value = newText + } + + val filteredResults: List + get() = searchResults.filter { + it.contains(_searchText.value, ignoreCase = true) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_art.png b/app/src/main/res/drawable/ic_art.png new file mode 100644 index 0000000..2e43d5f Binary files /dev/null and b/app/src/main/res/drawable/ic_art.png differ diff --git a/app/src/main/res/drawable/ic_language.png b/app/src/main/res/drawable/ic_language.png new file mode 100644 index 0000000..1725140 Binary files /dev/null and b/app/src/main/res/drawable/ic_language.png differ diff --git a/app/src/main/res/drawable/ic_math.png b/app/src/main/res/drawable/ic_math.png new file mode 100644 index 0000000..ab4bdec Binary files /dev/null and b/app/src/main/res/drawable/ic_math.png differ diff --git a/app/src/main/res/drawable/ic_science.png b/app/src/main/res/drawable/ic_science.png new file mode 100644 index 0000000..bb9cbee Binary files /dev/null and b/app/src/main/res/drawable/ic_science.png differ diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..d29c6ea --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_social_science.png b/app/src/main/res/drawable/ic_social_science.png new file mode 100644 index 0000000..f2ec4ad Binary files /dev/null and b/app/src/main/res/drawable/ic_social_science.png differ