|
@@ -1,6 +1,8 @@
|
|
|
package com.zaojiao.app.feat.home.plan.total
|
|
|
|
|
|
import androidx.compose.foundation.background
|
|
|
+import androidx.compose.foundation.clickable
|
|
|
+import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
|
import androidx.compose.foundation.layout.Box
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
import androidx.compose.foundation.layout.IntrinsicSize
|
|
@@ -18,6 +20,9 @@ import androidx.compose.material3.Text
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.runtime.collectAsState
|
|
|
import androidx.compose.runtime.getValue
|
|
|
+import androidx.compose.runtime.mutableStateOf
|
|
|
+import androidx.compose.runtime.remember
|
|
|
+import androidx.compose.runtime.setValue
|
|
|
import androidx.compose.ui.Alignment
|
|
|
import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.draw.clip
|
|
@@ -31,9 +36,10 @@ import androidx.compose.ui.unit.sp
|
|
|
import androidx.hilt.navigation.compose.hiltViewModel
|
|
|
import androidx.paging.compose.collectAsLazyPagingItems
|
|
|
import com.zaojiao.app.data.model.common.CategoryModel
|
|
|
+import com.zaojiao.app.data.model.common.CourseCategoryModel
|
|
|
import com.zaojiao.app.data.model.common.MediaCategoryModel
|
|
|
import com.zaojiao.app.data.model.common.SortCategoryModel
|
|
|
-import com.zaojiao.app.data.model.studyplan.StudyPlanCourseItemModel
|
|
|
+import com.zaojiao.app.data.model.studyplan.StudyPlanCourseModel
|
|
|
import com.zaojiao.app.feat.design.Colors
|
|
|
import com.zaojiao.app.feat.design.Images
|
|
|
import com.zaojiao.app.feat.design.Spacer
|
|
@@ -96,7 +102,7 @@ fun HomePlanTotalPage(
|
|
|
fun HomePlanTotalCategory(
|
|
|
mediaTypeList: List<MediaCategoryModel>,
|
|
|
sortTypeList: List<SortCategoryModel>,
|
|
|
- categoryList: List<CategoryModel>,
|
|
|
+ categoryList: List<CourseCategoryModel>,
|
|
|
initialMediaType: Int,
|
|
|
initialSortType: Int,
|
|
|
initialCategory: Int,
|
|
@@ -104,6 +110,12 @@ fun HomePlanTotalCategory(
|
|
|
onChangeSortType: (Int) -> Unit,
|
|
|
onChangeCategory: (Int) -> Unit,
|
|
|
) {
|
|
|
+ var mediaType by remember { mutableStateOf(initialMediaType) }
|
|
|
+ var sortType by remember { mutableStateOf(initialSortType) }
|
|
|
+ var category by remember { mutableStateOf(initialCategory) }
|
|
|
+
|
|
|
+ var categoryState by remember { mutableStateOf(true) }
|
|
|
+
|
|
|
Column(
|
|
|
modifier = Modifier
|
|
|
.background(
|
|
@@ -120,7 +132,7 @@ fun HomePlanTotalCategory(
|
|
|
) {
|
|
|
|
|
|
TabBar(
|
|
|
- initial = initialMediaType,
|
|
|
+ initial = mediaType,
|
|
|
tabs = mediaTypeList.map { model -> model.typeName },
|
|
|
selectColor = Colors.from("#FFF2F0F3"),
|
|
|
unselectColor = Colors.from("#FFF5F6F8"),
|
|
@@ -135,7 +147,10 @@ fun HomePlanTotalCategory(
|
|
|
fontSize = 14.sp,
|
|
|
lineHeight = 20.sp,
|
|
|
),
|
|
|
- onChange = onChangeMediaType,
|
|
|
+ onChange = {
|
|
|
+ mediaType = it
|
|
|
+ onChangeMediaType.invoke(it)
|
|
|
+ },
|
|
|
)
|
|
|
|
|
|
Spacer(height = 16.dp)
|
|
@@ -150,7 +165,7 @@ fun HomePlanTotalCategory(
|
|
|
.wrapContentHeight(),
|
|
|
) {
|
|
|
TabBar(
|
|
|
- initial = initialSortType,
|
|
|
+ initial = sortType,
|
|
|
tabs = sortTypeList.map { model -> model.typeName },
|
|
|
selectColor = Colors.from("#FFF2F0F3"),
|
|
|
unselectColor = Colors.from("#FFF5F6F8"),
|
|
@@ -165,43 +180,59 @@ fun HomePlanTotalCategory(
|
|
|
fontSize = 14.sp,
|
|
|
lineHeight = 20.sp,
|
|
|
),
|
|
|
- onChange = onChangeSortType,
|
|
|
+ onChange = {
|
|
|
+ sortType = it
|
|
|
+ onChangeSortType.invoke(it)
|
|
|
+ },
|
|
|
)
|
|
|
}
|
|
|
|
|
|
Images.Resource(
|
|
|
- id = R.mipmap.personal_clockin,
|
|
|
- modifier = Modifier.size(16.dp),
|
|
|
+ id = if (categoryState) R.mipmap.study_plan_show_category else R.mipmap.study_plan_hide_category,
|
|
|
+ modifier = Modifier
|
|
|
+ .clickable(
|
|
|
+ indication = null,
|
|
|
+ interactionSource = MutableInteractionSource(),
|
|
|
+ ) {
|
|
|
+ categoryState = !categoryState
|
|
|
+ }
|
|
|
+ .padding(horizontal = 16.dp, vertical = 6.dp)
|
|
|
+ .size(18.dp),
|
|
|
)
|
|
|
}
|
|
|
|
|
|
- Spacer(height = 16.dp)
|
|
|
+ if (categoryState) {
|
|
|
+ Spacer(height = 16.dp)
|
|
|
|
|
|
- TabBar(
|
|
|
- initial = initialCategory,
|
|
|
- tabs = categoryList.map { model -> model.name },
|
|
|
- selectColor = Colors.from("#FFF2F0F3"),
|
|
|
- unselectColor = Colors.from("#FFF5F6F8"),
|
|
|
- selectStyle = TextStyle(
|
|
|
- color = Colors.from("#FF0744AE"),
|
|
|
- fontSize = 14.sp,
|
|
|
- lineHeight = 20.sp,
|
|
|
- fontWeight = FontWeight.Medium,
|
|
|
- ),
|
|
|
- unselectStyle = TextStyle(
|
|
|
- color = Colors.FF333333,
|
|
|
- fontSize = 14.sp,
|
|
|
- lineHeight = 20.sp,
|
|
|
- ),
|
|
|
- onChange = onChangeCategory,
|
|
|
- )
|
|
|
+ TabBar(
|
|
|
+ initial = category,
|
|
|
+ tabs = categoryList.map { model -> model.name },
|
|
|
+ selectColor = Colors.from("#FFF2F0F3"),
|
|
|
+ unselectColor = Colors.from("#FFF5F6F8"),
|
|
|
+ selectStyle = TextStyle(
|
|
|
+ color = Colors.from("#FF0744AE"),
|
|
|
+ fontSize = 14.sp,
|
|
|
+ lineHeight = 20.sp,
|
|
|
+ fontWeight = FontWeight.Medium,
|
|
|
+ ),
|
|
|
+ unselectStyle = TextStyle(
|
|
|
+ color = Colors.FF333333,
|
|
|
+ fontSize = 14.sp,
|
|
|
+ lineHeight = 20.sp,
|
|
|
+ ),
|
|
|
+ onChange = {
|
|
|
+ category = it
|
|
|
+ onChangeCategory.invoke(it)
|
|
|
+ },
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
Spacer(height = 16.dp)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Composable
|
|
|
-fun HomePlanTotalCourseItem(model: StudyPlanCourseItemModel) {
|
|
|
+fun HomePlanTotalCourseItem(model: StudyPlanCourseModel) {
|
|
|
Row(
|
|
|
modifier = Modifier
|
|
|
.padding(horizontal = 16.dp)
|