|
@@ -0,0 +1,460 @@
|
|
|
|
+package com.cooleshow.student.ui.course;
|
|
|
|
+
|
|
|
|
+import android.content.DialogInterface;
|
|
|
|
+import android.graphics.Color;
|
|
|
|
+import android.os.Bundle;
|
|
|
|
+import android.text.TextUtils;
|
|
|
|
+import android.view.View;
|
|
|
|
+import android.widget.TextView;
|
|
|
|
+
|
|
|
|
+import com.alibaba.android.arouter.facade.annotation.Route;
|
|
|
|
+import com.alibaba.android.arouter.launcher.ARouter;
|
|
|
|
+import com.bigkoo.pickerview.builder.TimePickerBuilder;
|
|
|
|
+import com.bigkoo.pickerview.listener.CustomListener;
|
|
|
|
+import com.bigkoo.pickerview.listener.OnDismissListener;
|
|
|
|
+import com.bigkoo.pickerview.view.TimePickerView;
|
|
|
|
+import com.chad.library.adapter.base.BaseQuickAdapter;
|
|
|
|
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
|
|
|
|
+import com.chad.library.adapter.base.listener.OnItemClickListener;
|
|
|
|
+import com.cooleshow.base.bean.CommonCourseConfigBean;
|
|
|
|
+import com.cooleshow.base.constanst.Constants;
|
|
|
|
+import com.cooleshow.base.constanst.CourseAttendanceStatusType;
|
|
|
|
+import com.cooleshow.base.constanst.CourseGroupStatusType;
|
|
|
|
+import com.cooleshow.base.interfaces.IFilterViewData;
|
|
|
|
+import com.cooleshow.base.router.RouterPath;
|
|
|
|
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
|
|
|
|
+import com.cooleshow.base.utils.GlideUtils;
|
|
|
|
+import com.cooleshow.base.utils.TimeUtils;
|
|
|
|
+import com.cooleshow.base.utils.ToastUtil;
|
|
|
|
+import com.cooleshow.base.utils.UiUtils;
|
|
|
|
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
|
|
|
|
+import com.cooleshow.base.widgets.EmptyViewLayout;
|
|
|
|
+import com.cooleshow.base.widgets.dialog.CommonFilterDialog;
|
|
|
|
+import com.cooleshow.student.R;
|
|
|
|
+import com.cooleshow.student.adapter.PianoCourseGroupCourseListAdapter;
|
|
|
|
+import com.cooleshow.student.adapter.VIPCourseGroupDetailAdapter;
|
|
|
|
+import com.cooleshow.student.bean.VIPCourseGroupDetailBean;
|
|
|
|
+import com.cooleshow.student.bean.VIPCourseGroupDetailListBean;
|
|
|
|
+import com.cooleshow.student.constants.CourseConstants;
|
|
|
|
+import com.cooleshow.student.contract.VIPCourseGroupDetailContract;
|
|
|
|
+import com.cooleshow.student.databinding.AcPianoCourseGroupDetailLayoutBinding;
|
|
|
|
+import com.cooleshow.student.databinding.AcVipOrInterestCourseGroupDetailLayoutBinding;
|
|
|
|
+import com.cooleshow.student.presenter.course.VIPOrInterestCourseGroupDetailPresenter;
|
|
|
|
+import com.cooleshow.student.widgets.AppBarLayoutStateChangeListener;
|
|
|
|
+import com.dayayuemeng.classroom.helper.OpenClassRoomHelper;
|
|
|
|
+import com.google.android.material.appbar.AppBarLayout;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.Calendar;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
|
+import androidx.annotation.Nullable;
|
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Author by pq, Date on 2024/11/22.
|
|
|
|
+ */
|
|
|
|
+@Route(path = RouterPath.CourseCenter.PIANO_COURSE_GROUP_DETAIL)
|
|
|
|
+public class PianoCourseGroupDetailActivity extends BaseMVPActivity<AcPianoCourseGroupDetailLayoutBinding, VIPOrInterestCourseGroupDetailPresenter> implements VIPCourseGroupDetailContract.View, View.OnClickListener {
|
|
|
|
+ private int titleStyleMode = 1;//根据折叠展开状态控制title样式
|
|
|
|
+ public static final int EXPAND_MODE = 1;
|
|
|
|
+ public static final int COLLAP_MODE = 2;
|
|
|
|
+ private AppBarLayoutStateChangeListener.State lastState = AppBarLayoutStateChangeListener.State.EXPANDED;
|
|
|
|
+ private String title = "";
|
|
|
|
+ private String courseGroupId;
|
|
|
|
+ private String courseType = Constants.VIP_COURSE_TAG;
|
|
|
|
+ private String classMonth;
|
|
|
|
+ private Date currentSelectDate;
|
|
|
|
+ private String courseStatus = CourseGroupStatusType.ALL.getId();
|
|
|
|
+ private String currentAttendanceStatus;
|
|
|
|
+ private PianoCourseGroupCourseListAdapter mAdapter;
|
|
|
|
+ private CommonCourseConfigBean mConfigBean;
|
|
|
|
+ private VIPCourseGroupDetailBean mDetailBean;
|
|
|
|
+ private TimePickerView pvTime;
|
|
|
|
+ private List<IFilterViewData> statusList;//状态筛选
|
|
|
|
+ private List<IFilterViewData> attendanceStatusList;//考勤状态筛选
|
|
|
|
+ private int currentSelectStatusPosition = 0;
|
|
|
|
+ private int currentSelectAttendancePosition = 0;
|
|
|
|
+ private CommonFilterDialog mAttendanceStatusFilterDialog;
|
|
|
|
+ private CommonFilterDialog mStatusFilterDialog;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
|
+ QMUIStatusBarHelper.setStatusBarLightMode(PianoCourseGroupDetailActivity.this);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void initView() {
|
|
|
|
+ String courseTypeValue = getIntent().getStringExtra(Constants.COMMON_EXTRA_KEY);
|
|
|
|
+ if (!TextUtils.isEmpty(courseTypeValue)) {
|
|
|
|
+ courseType = courseTypeValue;
|
|
|
|
+ }
|
|
|
|
+ initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "琴房课详情");
|
|
|
|
+ viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
+ viewBinding.appBarLayout.addOnOffsetChangedListener(new AppBarLayoutStateChangeListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
|
|
|
+ switch (state) {
|
|
|
|
+ case EXPANDED: //展开
|
|
|
|
+ switchTitleStyle(EXPAND_MODE);
|
|
|
|
+ break;
|
|
|
|
+ case COLLAPSED: //折叠
|
|
|
|
+ switchTitleStyle(COLLAP_MODE);
|
|
|
|
+ break;
|
|
|
|
+ case INTERMEDIATE: //中间状态
|
|
|
|
+ if (lastState == State.COLLAPSED) {
|
|
|
|
+ switchTitleStyle(EXPAND_MODE);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ lastState = state;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void initData() {
|
|
|
|
+ super.initData();
|
|
|
|
+ courseGroupId = getIntent().getStringExtra(CourseConstants.COURSE_GROUP_ID);
|
|
|
|
+ if (TextUtils.isEmpty(courseGroupId)) {
|
|
|
|
+ finish();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ initFilterData();
|
|
|
|
+
|
|
|
|
+ EmptyViewLayout emptyViewLayout = new EmptyViewLayout(this);
|
|
|
|
+ emptyViewLayout.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无课程");
|
|
|
|
+ mAdapter = new PianoCourseGroupCourseListAdapter();
|
|
|
|
+ mAdapter.setEmptyView(emptyViewLayout);
|
|
|
|
+ viewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
|
|
|
+ viewBinding.recyclerView.setAdapter(mAdapter);
|
|
|
|
+ initListener();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initFilterData() {
|
|
|
|
+ CourseGroupStatusType[] values = CourseGroupStatusType.values();
|
|
|
|
+ List<CourseGroupStatusType> courseGroupStatusTypes = Arrays.asList(values);
|
|
|
|
+ statusList = new ArrayList<IFilterViewData>(courseGroupStatusTypes);
|
|
|
|
+
|
|
|
|
+ CourseAttendanceStatusType[] attendanceStatuValues = CourseAttendanceStatusType.values();
|
|
|
|
+ List<CourseAttendanceStatusType> attendanceStatus = Arrays.asList(attendanceStatuValues);
|
|
|
|
+ attendanceStatusList = new ArrayList<>(attendanceStatus);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initListener() {
|
|
|
|
+ viewBinding.tvTime.setOnClickListener(this);
|
|
|
|
+ viewBinding.tvCourseStatus.setOnClickListener(this);
|
|
|
|
+ viewBinding.tvAgency.setOnClickListener(this);
|
|
|
|
+ mAdapter.setOnItemClickListener(new OnItemClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
|
|
|
|
+ if (position < mAdapter.getData().size()) {
|
|
|
|
+ VIPCourseGroupDetailListBean bean = mAdapter.getData().get(position);
|
|
|
|
+ ARouter.getInstance().build(RouterPath.CourseCenter.PIANO_ROOM_COURSE_DETAIL)
|
|
|
|
+ .withString(CourseConstants.COURSE_ID, bean.getCourseId())
|
|
|
|
+ .navigation();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
|
|
|
|
+ //去上课
|
|
|
|
+ if (UiUtils.isFastClick()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (view.getId() == R.id.tv_go_start) {
|
|
|
|
+ if (position < mAdapter.getData().size()) {
|
|
|
|
+ VIPCourseGroupDetailListBean bean = mAdapter.getData().get(position);
|
|
|
|
+ goCourse(bean.getId(), bean.getStartTime(), bean.getSubjectName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void reBuildFilter(Date date, String status, String attendanceStatus) {
|
|
|
|
+ currentSelectDate = date != null ? date : TimeUtils.getNowDate();
|
|
|
|
+ String targetDateTimeStr = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
|
|
|
|
+ classMonth = targetDateTimeStr;
|
|
|
|
+ courseStatus = !TextUtils.isEmpty(status) ? status : CourseGroupStatusType.ALL.getId();
|
|
|
|
+ currentAttendanceStatus = !TextUtils.isEmpty(attendanceStatus) ? attendanceStatus : CourseAttendanceStatusType.ALL.getId();
|
|
|
|
+ if (viewBinding != null) {
|
|
|
|
+ viewBinding.tvTime.setText(classMonth);
|
|
|
|
+ }
|
|
|
|
+ refreshCourseList(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void goCourse(String courseScheduleId, String courseStartTime, String subjectName) {
|
|
|
|
+ if (!TextUtils.isEmpty(courseScheduleId) && !TextUtils.isEmpty(courseStartTime)) {
|
|
|
|
+ if (mConfigBean != null) {
|
|
|
|
+ boolean lessThanTargetTime = TimeUtils.isLessThanTargetTime(mConfigBean.getPianoStartTime(), courseStartTime);
|
|
|
|
+ if (!lessThanTargetTime) {
|
|
|
|
+ ToastUtil.getInstance().showShort("课程还未开始,请在上课前" + mConfigBean.getPracticeStartTime() + "分钟进入");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ OpenClassRoomHelper.start(this, courseScheduleId, subjectName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void switchTitleStyle(int mode) {
|
|
|
|
+ if (titleStyleMode == mode) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ titleStyleMode = mode;
|
|
|
|
+ if (mode == 1) {
|
|
|
|
+ viewBinding.collapsingToolbarLayout.setContentScrimColor(Color.TRANSPARENT);
|
|
|
|
+ viewBinding.collapsingToolbarLayout.setStatusBarScrimColor(Color.TRANSPARENT);
|
|
|
|
+ viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
+ viewBinding.csFilter.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
+ } else {
|
|
|
|
+ viewBinding.collapsingToolbarLayout.setContentScrimColor(Color.WHITE);
|
|
|
|
+ viewBinding.collapsingToolbarLayout.setStatusBarScrimColor(Color.WHITE);
|
|
|
|
+ viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.WHITE);
|
|
|
|
+ viewBinding.csFilter.setBackgroundColor(Color.WHITE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected AcPianoCourseGroupDetailLayoutBinding getLayoutView() {
|
|
|
|
+ return AcPianoCourseGroupDetailLayoutBinding.inflate(getLayoutInflater());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected VIPOrInterestCourseGroupDetailPresenter createPresenter() {
|
|
|
|
+ return new VIPOrInterestCourseGroupDetailPresenter();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void onResume() {
|
|
|
|
+ super.onResume();
|
|
|
|
+ refresh();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void refresh() {
|
|
|
|
+ presenter.getCourseConfig();
|
|
|
|
+ presenter.queryDetail(true, courseGroupId);
|
|
|
|
+ reBuildFilter(currentSelectDate, courseStatus, currentAttendanceStatus);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void refreshCourseList(boolean isShowLoading) {
|
|
|
|
+ presenter.queryCourseList(isShowLoading, courseGroupId, classMonth, courseStatus, currentAttendanceStatus);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDetailSuccess(VIPCourseGroupDetailBean bean) {
|
|
|
|
+ if (!checkActivityExist()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ this.mDetailBean = bean;
|
|
|
|
+
|
|
|
|
+ viewBinding.tvCourseGroupTitle.setText(bean.getCourseGroupName());
|
|
|
|
+ viewBinding.tvName.setText(bean.getTeacherName());
|
|
|
|
+ viewBinding.tvCourseCompletedValue.setText(bean.getCompleteCourseNum());
|
|
|
|
+ viewBinding.tvCourseTotalValue.setText(bean.getCourseNum());
|
|
|
|
+ viewBinding.tvCourseName.setText(bean.getSubjectName());
|
|
|
|
+
|
|
|
|
+ TextView tv_status = viewBinding.tvStatus;
|
|
|
|
+ String status = bean.getStatus();
|
|
|
|
+ if (TextUtils.equals(status, CourseGroupStatusType.ING.getId())) {
|
|
|
|
+ //进行中
|
|
|
|
+ tv_status.setText(CourseGroupStatusType.ING.getValue());
|
|
|
|
+ tv_status.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
|
|
|
|
+ } else if (TextUtils.equals(status, CourseGroupStatusType.NOT_START.getId())) {
|
|
|
|
+ //未开始
|
|
|
|
+ tv_status.setText(CourseGroupStatusType.NOT_START.getValue());
|
|
|
|
+ tv_status.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_ff802c));
|
|
|
|
+ } else if (TextUtils.equals(status, CourseGroupStatusType.COMPLETE.getId())) {
|
|
|
|
+ //已结课
|
|
|
|
+ tv_status.setText(CourseGroupStatusType.COMPLETE.getValue());
|
|
|
|
+ tv_status.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
|
|
|
|
+ } else if (TextUtils.equals(status, CourseGroupStatusType.CANCEL.getId())) {
|
|
|
|
+ //已取消
|
|
|
|
+ tv_status.setText(CourseGroupStatusType.CANCEL.getValue());
|
|
|
|
+ tv_status.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String coursePlan = bean.getCoursePlan();
|
|
|
|
+ boolean hasPlan = !TextUtils.isEmpty(coursePlan);
|
|
|
|
+ viewBinding.tvPlanContent.setText(coursePlan);
|
|
|
|
+ viewBinding.csCoursePlan.setVisibility(hasPlan ? View.VISIBLE : View.GONE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getCourseListSuccess(ArrayList<VIPCourseGroupDetailListBean> data) {
|
|
|
|
+ if (!checkActivityExist()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (mAdapter != null) {
|
|
|
|
+ mAdapter.setList(data);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getCourseConfigSuccess(CommonCourseConfigBean data) {
|
|
|
|
+ if (!checkActivityExist()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ this.mConfigBean = data;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void updateCoursePlanSuccess() {
|
|
|
|
+ if (!checkActivityExist()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ refresh();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ int id = v.getId();
|
|
|
|
+ if (id == R.id.tv_time) {
|
|
|
|
+ showTimeSelectPicker();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (id == R.id.tv_course_status) {
|
|
|
|
+ selectCourseStatus();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (id == R.id.tv_agency) {
|
|
|
|
+ selectAttendanceStatus();
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void showTimeSelectPicker() {
|
|
|
|
+ if (pvTime == null) {
|
|
|
|
+ pvTime = new TimePickerBuilder(this, (date, v) -> {//选中事件回调
|
|
|
|
+ reBuildFilter(date, courseStatus, currentAttendanceStatus);
|
|
|
|
+ }).setLayoutRes(com.cooleshow.base.R.layout.pickerview_default_layout, new CustomListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void customLayout(View v) {
|
|
|
|
+ //自定义布局中的控件初始化及事件处理
|
|
|
|
+ final TextView tvSubmit = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_finish);
|
|
|
|
+ TextView ivCancel = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_cancel);
|
|
|
|
+ tvSubmit.setOnClickListener(new View.OnClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ pvTime.returnData();
|
|
|
|
+ pvTime.dismiss();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ ivCancel.setOnClickListener(new View.OnClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ pvTime.dismiss();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .setTextColorOut(getResources().getColor(com.cooleshow.base.R.color.color_aaaaaa))
|
|
|
|
+ .setDividerColor(Color.TRANSPARENT)
|
|
|
|
+ .setBgColor(Color.TRANSPARENT)
|
|
|
|
+ .setLineSpacingMultiplier(2.5f)
|
|
|
|
+ .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
|
|
|
|
+ .setTextColorCenter(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a))//设置选中项的颜色
|
|
|
|
+ .isDialog(false)//是否显示为对话框样式
|
|
|
|
+ .setLabel("年", "月", "", "", "", "")
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+ pvTime.setOnDismissListener(new OnDismissListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onDismiss(Object o) {
|
|
|
|
+ UiUtils.refreshFilterTextStyle2(false, viewBinding.tvTime);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onShow() {
|
|
|
|
+ UiUtils.refreshFilterTextStyle2(true, viewBinding.tvTime);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
+ if (currentSelectDate == null) {
|
|
|
|
+ currentSelectDate = TimeUtils.getNowDate();
|
|
|
|
+ }
|
|
|
|
+ calendar.setTime(currentSelectDate);
|
|
|
|
+ pvTime.setDate(calendar);
|
|
|
|
+ if (!pvTime.isShowing()) {
|
|
|
|
+ pvTime.show();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void selectCourseStatus() {
|
|
|
|
+ if (mStatusFilterDialog == null) {
|
|
|
|
+ mStatusFilterDialog = new CommonFilterDialog<IFilterViewData>(this);
|
|
|
|
+ mStatusFilterDialog.setOnEventListener(new CommonFilterDialog.OnEventListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onItemClickListener(BaseQuickAdapter baseQuickAdapter, int pos) {
|
|
|
|
+ if (statusList != null && pos < statusList.size()) {
|
|
|
|
+ PianoCourseGroupDetailActivity.this.currentSelectStatusPosition = pos;
|
|
|
|
+ IFilterViewData iFilterViewData = statusList.get(pos);
|
|
|
|
+ courseStatus = iFilterViewData.getDataId();
|
|
|
|
+ viewBinding.tvCourseStatus.setText(!TextUtils.isEmpty(courseStatus) ? iFilterViewData.getShowName() : "全部状态");
|
|
|
|
+ reBuildFilter(currentSelectDate, courseStatus, currentAttendanceStatus);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ mStatusFilterDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onDismiss(DialogInterface dialog) {
|
|
|
|
+ UiUtils.refreshFilterTextStyle(false, viewBinding.tvCourseStatus);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (!mStatusFilterDialog.isShowing()) {
|
|
|
|
+ mStatusFilterDialog.show();
|
|
|
|
+ UiUtils.refreshFilterTextStyle(true, viewBinding.tvCourseStatus);
|
|
|
|
+ }
|
|
|
|
+ mStatusFilterDialog.setSelectPos(currentSelectStatusPosition);
|
|
|
|
+ mStatusFilterDialog.setData(statusList);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void selectAttendanceStatus() {
|
|
|
|
+ if (mAttendanceStatusFilterDialog == null) {
|
|
|
|
+ mAttendanceStatusFilterDialog = new CommonFilterDialog<IFilterViewData>(this);
|
|
|
|
+ mAttendanceStatusFilterDialog.setOnEventListener(new CommonFilterDialog.OnEventListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onItemClickListener(BaseQuickAdapter baseQuickAdapter, int pos) {
|
|
|
|
+ if (attendanceStatusList != null && pos < attendanceStatusList.size()) {
|
|
|
|
+ PianoCourseGroupDetailActivity.this.currentSelectAttendancePosition = pos;
|
|
|
|
+ IFilterViewData iFilterViewData = attendanceStatusList.get(pos);
|
|
|
|
+ currentAttendanceStatus = iFilterViewData.getDataId();
|
|
|
|
+ viewBinding.tvAgency.setText(iFilterViewData.getShowName());
|
|
|
|
+ reBuildFilter(currentSelectDate, courseStatus, currentAttendanceStatus);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ mAttendanceStatusFilterDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onDismiss(DialogInterface dialog) {
|
|
|
|
+ UiUtils.refreshFilterTextStyle(false, viewBinding.tvAgency);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (!mAttendanceStatusFilterDialog.isShowing()) {
|
|
|
|
+ mAttendanceStatusFilterDialog.show();
|
|
|
|
+ UiUtils.refreshFilterTextStyle(true, viewBinding.tvAgency);
|
|
|
|
+ }
|
|
|
|
+ mAttendanceStatusFilterDialog.setSelectPos(currentSelectAttendancePosition);
|
|
|
|
+ mAttendanceStatusFilterDialog.setData(attendanceStatusList);
|
|
|
|
+ }
|
|
|
|
+}
|