lmw
2024-09-25 92778728b83ce1a34ba21bcdb061afdeca16cce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.sinata.xqmuse.ui.mine
 
import android.Manifest
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.Settings
import androidx.core.os.bundleOf
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.activity.ImagePagerActivity
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.utils.myToast
import com.sinata.xqmuse.utils.picture.PictureSelectorHelper
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.TipDialog
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
import com.sinata.xqmuse.ui.course.adapter.PhotoAdapter
import com.sinata.xqmuse.ui.discovery.VideoPlayerActivity
import com.sinata.xqmuse.utils.extention.clickDelay
import com.sinata.xqmuse.utils.extention.uploadWithCompress
import com.sinata.xqmuse.utils.interfaces.StringCallback
import com.tbruyelle.rxpermissions2.RxPermissions
import kotlinx.android.synthetic.main.activity_feedback.*
import org.jetbrains.anko.startActivity
 
class FeedbackActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_feedback
 
    private val imgList = arrayListOf<String>()
    private val imgAdapter = PhotoAdapter(imgList,true)
 
    override fun initClick() {
        imgAdapter.setOnItemClickListener { view, position ->
            if (imgList[position].isEmpty()){
                takeMedia()
            }else{
                if (imgAdapter.video.isNotEmpty()){
                    startActivity<VideoPlayerActivity>("videoUrl" to imgAdapter.video)
                }else{
                    //图片预览
                    startActivity<ImagePagerActivity>("url" to imgList.filter { it.isNotEmpty() },"position" to position)
                }
            }
        }
 
        tv_action.clickDelay {
            val content = et_content.text.toString()
            if (content.isEmpty()){
                myToast("请填写反馈内容")
                return@clickDelay
            }
            val imgs = imgList.filter { it.isNotEmpty() }.joinToString(",") { it }
            HttpManager.feedBack(content,if (imgs.isEmpty()) null else imgs).request(this){ _, _->
                myToast("提交成功")
                finish()
            }
        }
    }
 
    private fun takeMedia(){
        val rxPermissions = RxPermissions(this)
        if (rxPermissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
            PictureSelectorHelper.pickMultipleMedia(
                this,
                10 - imgList.size, false  )
        }else{
            val fileGranted = rxPermissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)
            if (SPUtils.instance().getBoolean("FILE_REFUSE") && !fileGranted) {
                myToast("缺少文件权限")
                return
            }
            val tipDialog = TipDialog()
            tipDialog.arguments = bundleOf("msg" to "为了访问手机相册选择图片上传,我们需要获取文件读写权限", "ok" to "去授权", "cancel" to "不需要")
            tipDialog.setCallback(object : TipDialog.OnClickCallback {
                override fun onOk() {
                    rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        .subscribe {
                            if (it) {
                                PictureSelectorHelper.pickMultipleMedia(
                                    this@FeedbackActivity,
                                    10 - imgList.size, false  )
                            } else {
                                myToast("缺少文件权限")
                                SPUtils.instance().put("FILE_REFUSE", true).apply()
                            }
                        }
                }
 
                override fun onCancel() {
                    SPUtils.instance().put("FILE_REFUSE", true).apply()
                }
            })
            tipDialog.show(supportFragmentManager,"permission")
        }
    }
 
    override fun initView() {
        tv_2.text = SpanBuilder("*反馈内容:").color(this,0,1,R.color.colorRed).build()
        rv_photo.layoutManager = GridLayoutManager(this,3)
        rv_photo.adapter = imgAdapter
        imgList.add("")
        imgAdapter.notifyDataSetChanged()
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        PictureSelectorHelper.onPickResult(
            requestCode,
            resultCode,
            data,
            object : StringCallback {
                override fun onResult(rst: String) {
                    //反馈无视频
                }
            }) {
            showDialog()
            val list = arrayListOf<String>()
            it.forEachIndexed { index, s ->
                s.uploadWithCompress(this, object : StringCallback {
                    override fun onResult(rst: String) {
                        list.add(rst)
                        if (list.size == it.size) {
                            dismissDialog()
                            imgList.addAll(imgList.size - 1, list)
                            if (imgList.size == 10)
                                imgList.removeAt(9)
                            imgAdapter.notifyDataSetChanged()
                        }
                    }
                })
            }
        }
 
    }
 
}