| | |
| | | package com.sinata.xqmuse.ui.discovery |
| | | |
| | | import androidx.recyclerview.widget.LinearLayoutManager |
| | | import cn.sinata.xldutils.activity.BaseActivity |
| | | import android.Manifest |
| | | import androidx.recyclerview.widget.GridLayoutManager |
| | | import cn.sinata.xldutils.fragment.BaseFragment |
| | | import cn.sinata.xldutils.gone |
| | | import cn.sinata.xldutils.visible |
| | | import cn.sinata.xldutils.utils.SPUtils |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.dialog.AddMomentPop |
| | | import com.sinata.xqmuse.dialog.TipDialog |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.entity.Dynamic |
| | | import com.sinata.xqmuse.network.entity.Place |
| | | import com.sinata.xqmuse.network.requestByF |
| | | import com.sinata.xqmuse.ui.discovery.adapter.DynamicAdapter |
| | | import com.sinata.xqmuse.ui.discovery.adapter.PlaceAdapter |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.sinata.xqmuse.utils.event.EmptyEvent |
| | | import com.sinata.xqmuse.utils.extention.clickDelay |
| | | import com.sinata.xqmuse.utils.interfaces.StringCallback |
| | | import com.tbruyelle.rxpermissions2.RxPermissions |
| | | import kotlinx.android.synthetic.main.fragment_discovery.* |
| | | import org.greenrobot.eventbus.EventBus |
| | | import org.greenrobot.eventbus.Subscribe |
| | | import org.jetbrains.anko.support.v4.dip |
| | | import org.jetbrains.anko.support.v4.startActivity |
| | | |
| | | |
| | | class DiscoveryFragment : BaseFragment() { |
| | | override fun contentViewId() = R.layout.fragment_discovery |
| | | |
| | | private val dyns = arrayListOf<Dynamic>() |
| | | private val adapter = DynamicAdapter(dyns) |
| | | private val list = arrayListOf<Place>() |
| | | private val adapter = PlaceAdapter(list) |
| | | private var page = 1 |
| | | var search: String? = null //搜索 |
| | | |
| | | |
| | | override fun onFirstVisibleToUser() { |
| | | EventBus.getDefault().register(this) |
| | | rv_act.layoutManager = LinearLayoutManager(requireContext()) |
| | | rv_act.adapter = adapter |
| | | iv_msg.setOnClickListener { |
| | | startActivity<MsgActivity>() |
| | | } |
| | | iv_add.setOnClickListener { |
| | | val pop = AddMomentPop(requireContext()) |
| | | pop.setCallback(object : StringCallback { |
| | | override fun onResult(rst: String) { |
| | | startActivity<PublishActivity>("isVideo" to (rst == "video")) |
| | | } |
| | | }) |
| | | pop.showAsDropDown(iv_add,dip(-120),-iv_add.measuredHeight-dip(20)) |
| | | } |
| | | rv_list.layoutManager = GridLayoutManager(requireContext(),2) |
| | | rv_list.adapter = adapter |
| | | |
| | | adapter.setOnItemClickListener { view, position -> |
| | | startActivity<DynamicActivity>("id" to dyns[position].id) |
| | | startActivity<PlaceDetailActivity>("id" to list[position].id) |
| | | } |
| | | refreshLayout.setOnRefreshListener { |
| | | val s = et_search.text.toString() |
| | |
| | | page++ |
| | | getData() |
| | | } |
| | | tv_search.clickDelay { |
| | | val s = et_search.text.toString() |
| | | search = if (s.isNullOrEmpty()) null else s |
| | | (requireActivity() as BaseActivity).hideInputMethod() |
| | | refreshLayout.resetNoMoreData() |
| | | page = 1 |
| | | getData() |
| | | |
| | | et_search.setOnClickListener { |
| | | startActivity<SearchPlaceActivity>() |
| | | } |
| | | getUnread() |
| | | page = 1 |
| | | getData() |
| | | checkLocation() |
| | | } |
| | | |
| | | fun getUnread(){ |
| | | HttpManager.messageCount().requestByF(this){_,data-> |
| | | if (data?:0>99){ |
| | | tv_unread.visible() |
| | | tv_unread.text = "99+" |
| | | }else if (data?:0>0){ |
| | | tv_unread.visible() |
| | | tv_unread.text = data.toString() |
| | | }else |
| | | tv_unread.gone() |
| | | private fun checkLocation() { |
| | | val rxPermissions = RxPermissions(requireActivity()) |
| | | if (rxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)||SPUtils.instance().getBoolean(Const.User.LOCATION_REFUSED)){ |
| | | refreshLayout.autoRefresh() |
| | | }else{ |
| | | TipDialog.show(childFragmentManager,"为了展示您附近的疗愈馆,我们需要获取该设备的位置权限",object :TipDialog.OnClickCallback{ |
| | | override fun onOk() { |
| | | val subscribe = |
| | | rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe { |
| | | if (it){ |
| | | //todo 高德定位 |
| | | refreshLayout.autoRefresh() |
| | | }else{ |
| | | SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply() |
| | | refreshLayout.autoRefresh() |
| | | } |
| | | } |
| | | compositeDisposable.add(subscribe) |
| | | } |
| | | |
| | | override fun onCancel() { |
| | | SPUtils.instance().put(Const.User.LOCATION_REFUSED,true).apply() |
| | | refreshLayout.autoRefresh() |
| | | } |
| | | },"去授权","取消") |
| | | } |
| | | } |
| | | |
| | | |
| | | private fun getData(){ |
| | | HttpManager.findList(page,search).requestByF(this,success = {_,data-> |
| | | HttpManager.getMeditationPage(page,search,JkApplication.lat, JkApplication.lon).requestByF(this,success = { _, data-> |
| | | if (page == 1) |
| | | dyns.clear() |
| | | dyns.addAll(data?: arrayListOf()) |
| | | list.clear() |
| | | list.addAll(data?.list?: arrayListOf()) |
| | | adapter.notifyDataSetChanged() |
| | | if (dyns.isEmpty()) |
| | | if (list.isEmpty()) |
| | | refreshLayout.finishRefreshWithNoMoreData() |
| | | else if (data.isNullOrEmpty()) |
| | | else if (data?.list?.isNullOrEmpty() == true) |
| | | refreshLayout.finishLoadMoreWithNoMoreData() |
| | | else if (page == 1) |
| | | refreshLayout.finishRefresh() |