You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
3.6 KiB

package com.gyf.csams.association.model
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.gyf.csams.NOT_IMPL_TIP
import com.gyf.csams.uikit.AssociationMenu
import com.gyf.csams.uikit.ScrollList
import com.gyf.csams.uikit.StringForm
import com.gyf.csams.uikit.TopMenuInterface
import com.orhanobut.logger.Logger
import kotlinx.coroutines.launch
class AssociationViewModel : ViewModel(), TopMenuInterface<AssociationMenu> {
override val _currentMenu: MutableLiveData<AssociationMenu> = MutableLiveData()
override val currentMenu: LiveData<AssociationMenu> = _currentMenu
/**
* 下拉菜单状态
*/
private val _expanded = MutableLiveData(false)
val expanded: LiveData<Boolean> = _expanded
/**
* 切换下拉菜单状态
*
*/
fun switchType() {
_expanded.value?.let {
_expanded.value = !it
}
}
fun close() {
_expanded.value = false
}
}
data class MemberVo(val name: String)
/**
* 社团会员
*
*/
class MemberViewModel : ScrollList<MemberVo>() {
val name = StringForm(formDesc = "姓名关键字", 5)
val search = "搜索"
private val _memberList = MutableLiveData<MutableList<MemberVo>>(mutableListOf())
val memberList = _memberList
override val initSize: Int = 10
init {
load()
}
/**
* 初始化成员
*
*/
override fun load() {
viewModelScope.launch {
_memberList.value?.apply {
repeat(initSize) {
add(MemberVo(name = "成员${size + 1}"))
}
Logger.i("初始化社团成员size=$size")
}
}
}
/**
* 加载更多成员
*
*/
override fun loadMore(callback: (message: String) -> Unit) {
viewModelScope.launch {
_memberList.value?.let {
val t = mutableListOf<MemberVo>()
t.addAll(it)
t.apply {
repeat(10) {
add(MemberVo(name = "成员${t.size + 1}"))
}
}
_memberList.postValue(t)
Logger.i("加载更多社团成员,size=${t.size}")
}
}
}
/**
* TODO 社团成员搜索
*
* @param callback
*/
fun search(callback: (value: String) -> Unit) {
Logger.i("搜索条件[成员姓名:${name.formValue.value}]")
callback(NOT_IMPL_TIP)
}
}
data class OngoingActVo(val name: String)
class OngoingActViewModel : ViewModel() {
private val _act = MutableLiveData<OngoingActVo>()
val act: LiveData<OngoingActVo> = _act
}
data class HistoryActVo(val name: String)
/**
* 历史活动
*
*/
class HistoryActViewModel : ScrollList<HistoryActVo>() {
override val initSize = 10
init {
load()
}
override fun load() {
viewModelScope.launch {
_data.value?.apply {
repeat(initSize) {
add(HistoryActVo(name = "活动${size + 1}"))
}
Logger.i("初始化活动数量:${size}")
}
}
}
override fun loadMore(callback: (message: String) -> Unit) {
_data.value?.apply {
val t = mutableListOf<HistoryActVo>()
t.addAll(this)
t.apply {
repeat(10) {
add(HistoryActVo(name = "活动${t.size + 1}"))
}
}
_data.postValue(t)
callback("成功加载更多活动")
}
}
}