package com.yidianling.course.widget
import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.graphics.Paint
import androidx.constraintlayout.widget.ConstraintLayout
import android.text.TextUtils
import android.util.AttributeSet
import android.view.View
import com.alibaba.android.arouter.launcher.ARouter
import com.lzf.easyfloat.permission.PermissionUtils
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper
import com.ydl.media.view.PlayerFloatView
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.modular.ModularServiceManager.provide
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.common.tools.RxImageTool
import com.yidianling.common.tools.ToastUtil
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.course.CourseConstants
import com.yidianling.course.R
import com.yidianling.course.bean.Course
import com.yidianling.course.constants.CourseBIConstants
import kotlinx.android.synthetic.main.item_course_new_list_view.view.*
/**
* @author jiucheng
* @描述:课程列表页改版后的itemView
* @Copyright Copyright (c) 2018
* @Company 壹点灵
* @date 2019/8/13
*/
class CourseItemNewView : ConstraintLayout {
private var mContext: Context
private lateinit var course: Course
private var statusListener: PlayerFloatView.FloatViewPlayListener? = null
private var headUrl: String = ""
private var doctorName: String = ""
constructor(mContext: Context) : super(mContext) {
this.mContext = mContext
initView()
}
constructor(mContext: Context, attr: AttributeSet) : super(mContext, attr) {
this.mContext = mContext
initView()
}
fun initView() {
View.inflate(mContext, R.layout.item_course_new_list_view, this)
val params = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
layoutParams = params
setPadding(RxImageTool.dp2px(13f), 0, RxImageTool.dp2px(15f), 0)
}
@SuppressLint("SetTextI18n")
fun setData(course: Course) {
this.course = course
if (!TextUtils.isEmpty(course.hostListPic)) {
headUrl = course.hostListPic
} else {
if (course.courseHostInfo != null && !TextUtils.isEmpty(course.courseHostInfo.doctorHead)) {
headUrl = course.courseHostInfo.doctorHead
}
}
GlideApp.with(mContext)
.load(headUrl)
.into(iv_head)
//活动标签
if (course.joinActivity && !TextUtils.isEmpty(course.activityImg)) {
img_activity.visibility = View.VISIBLE
GlideApp.with(context).load(course.activityImg).into(img_activity)
tv_title.text = "\u3000\u3000\u3000\u0020" + course.title
} else {
img_activity.visibility = View.GONE
tv_title.text = course.title
}
if (!TextUtils.isEmpty(course.doctorName)) {
doctorName = course.doctorName
} else {
if (course.courseHostInfo != null && !TextUtils.isEmpty(course.courseHostInfo.doctorName)) {
doctorName = course.courseHostInfo.doctorName
}
}
var info = ""
if (!TextUtils.isEmpty(course.hostInfo)) {
info = course.hostInfo
} else {
if (course.courseHostInfo != null && !TextUtils.isEmpty(course.courseHostInfo.title)) {
info = course.courseHostInfo.title
}
}
if (TextUtils.isEmpty(doctorName) || TextUtils.isEmpty(info)) {
tv_doctor_info.text = "壹点灵课程精选讲师"
} else {
tv_doctor_info.text = "$doctorName · $info"
}
tv_course_info.text = "共${course.subCourseNum}讲"
tv_course_num.text = "${course.joinNum}人已学"
if (course.subCourseNum == 0) {
tv_course_info.visibility = View.GONE
view_line.visibility = View.GONE
} else {
tv_course_info.visibility = View.VISIBLE
view_line.visibility = View.VISIBLE
}
if (course.isInvite == 0) {
tv_fan_li.visibility = View.GONE
} else {
tv_fan_li.visibility = View.VISIBLE
}
if (course.newCourse == 1) {
iv_new.visibility = View.VISIBLE
} else {
iv_new.visibility = View.GONE
}
if (course.recommend == 2) {
iv_hot.visibility = View.VISIBLE
} else {
iv_hot.visibility = View.GONE
}
if (course.demoType == 0) {
iv_play.visibility = View.GONE
} else {
iv_play.visibility = View.VISIBLE
}
iv_play.setOnClickListener {
playMedia()
ActionCountUtils.count(
CourseBIConstants.CourseListEvent.POSITION_COURSE_LIST_AUDITION_CLICK,
course.id
)
}
tv_view_course.setOnClickListener {
if (TextUtils.equals(course.courseType, "1") || TextUtils.equals(
course.courseType,
"7"
) || TextUtils.equals(course.courseType, "6")
) {
ARouter.getInstance()
.build("/course/play")
.withInt("course_id", course.id.toInt())
.navigation()
} else {
val h5Params = H5Params(CourseConstants.COURSE_DETAIL_H5 + course.id, "课程详情")
NewH5Activity.start(mContext, h5Params)
}
ActionCountUtils.count(CourseBIConstants.CourseListEvent.POSITION_COURSE_LIST_XXX_CLICK + course.id + "_click")
}
if (!TextUtils.isEmpty(course.applyFee)) {
if (course.applyFee.contains(".")) {
tv_price.text = course.applyFee.split(".")[0]
tv_price_decimal.text = "." + course.applyFee.split(".")[1]
} else {
tv_price.text = course.applyFee
tv_price_decimal.text = ".00"
}
}
if (TextUtils.equals("1", course.isPromotion) || TextUtils.equals(
"3",
course.isPromotion
)
) {
tv_cu_xiao.visibility = View.VISIBLE
if (TextUtils.equals("1", course.isPromotion)) {
if (course.promotionApplyFee.contains(".")) {
tv_price.text = course.promotionApplyFee.split(".")[0]
tv_price_decimal.text = "." + course.promotionApplyFee.split(".")[1]
} else {
tv_price.text = course.promotionApplyFee
tv_price_decimal.text = ".00"
}
}
} else {
tv_cu_xiao.visibility = View.GONE
}
if (course.isBuy) {
tv_view_course.visibility = View.VISIBLE
if (TextUtils.equals(course.courseType, "1") || TextUtils.equals(
course.courseType,
"7"
) || TextUtils.equals(course.courseType, "6")
) {
tv_view_course.text = "立即听课"
} else {
tv_view_course.text = "查看课程"
}
tv_original_price.visibility = View.GONE
tv_price_si.visibility = View.GONE
tv_price.visibility = View.GONE
tv_price_decimal.visibility = View.GONE
} else {
tv_view_course.visibility = View.GONE
tv_original_price.visibility = View.VISIBLE
tv_price_si.visibility = View.VISIBLE
tv_price.visibility = View.VISIBLE
tv_price_decimal.visibility = View.VISIBLE
if (TextUtils.isEmpty(course.originalApplyFee) || TextUtils.equals(
course.originalApplyFee,
"0"
) || TextUtils.equals(
course.originalApplyFee,
"0.0"
) || TextUtils.equals(course.originalApplyFee, "0.00")
) {
tv_original_price.visibility = View.GONE
} else {
tv_original_price.visibility = View.VISIBLE
}
tv_original_price.text = "¥" + course.originalApplyFee
tv_original_price.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
}
}
fun setGuideData(pic: String, location: String) {
view_bottom_line.visibility = View.INVISIBLE
iv_guide_image.visibility = View.VISIBLE
GlideApp.with(mContext)
.load(pic)
.into(iv_guide_image)
iv_guide_image.setOnClickListener {
provide(IConsultantService::class.java).jumpConsultAssistant(
mContext as Activity,
location.toInt()
)
}
}
fun setGuideGone(){
iv_guide_image.visibility = View.GONE
}
fun isGuideVisible(): Boolean {
return iv_guide_image.visibility == View.VISIBLE
}
private fun playMedia() {
if (PlayerFloatHelper.isShow(mContext)) {
PlayerFloatHelper.hide()
PlayerFloatHelper.removeView(mContext)
AudioPlayer.get().stopPlayer()
} else {
PlayerFloatHelper.removeView(mContext)
}
val music = Music()
music.title = course.title
music.artist = doctorName
music.coverPath = if (!TextUtils.isEmpty(course.image)) course.image else course.pic
PlayerFloatHelper.isCanClick = false
if (course.demoType == 1) {
music.path = course.demoFile
val hashMap = HashMap<String, String>()
PlayerFloatHelper.playTempData.clear()
hashMap["course_id"] = course.id.toString()
AudioPlayer.get().singlePlay(music)
PlayerFloatHelper.show(
mContext,
playTypeEnum = PlayTypeEnum.PLAY_TYPE_COURSE,
playData = hashMap
)
VideoFloatHelper.dismissFloat(mContext as Activity)
}
if (course.demoType == 2) {
VideoFloatHelper.setVideoInfo(
course.id.toString(),
course.demoFile,
false
)
checkPermission()
if (PlayerFloatHelper.isShow(mContext)) {
PlayerFloatHelper.hide()
PlayerFloatHelper.removeView(mContext)
AudioPlayer.get().stopPlayer()
}
}
if (statusListener == null) {
statusListener = object : PlayerFloatView.FloatViewPlayListener {
override fun onStartClick() {
}
override fun onPlayFinish() {
PlayerFloatHelper.hide()
AudioPlayer.get().stopPlayer()
}
override fun onPauseClick() {
}
}
PlayerFloatHelper.addClickListener(statusListener as PlayerFloatView.FloatViewPlayListener)
}
}
fun setBottomLineGone() {
view_bottom_line.visibility = View.INVISIBLE
}
fun setBottomLineVisible() {
view_bottom_line.visibility = View.VISIBLE
}
fun hideListenerButton() {
tv_view_course.visibility = View.GONE
}
/**
* 检测浮窗权限是否开启,若没有给与申请提示框(非必须,申请依旧是EasyFloat内部内保进行)
*/
private fun checkPermission() {
if (PermissionUtils.checkPermission(mContext)) {
VideoFloatHelper.showVideoFloat(mContext as Activity)
} else {
AlertDialog.Builder(mContext)
.setMessage("使用浮窗功能,需要您授权悬浮窗权限。")
.setPositiveButton("去开启") { _, _ ->
VideoFloatHelper.showVideoFloat(mContext as Activity)
}
.setNegativeButton("取消") { _, _ ->
ToastUtil.toastLong(
mContext,
"App正常工作需要内部存储使用权限,请开启"
)
}
.show()
}
}
}