-
Notifications
You must be signed in to change notification settings - Fork 0
승완 문의 하기, 약속 하기
wandukong edited this page Jan 15, 2021
·
3 revisions
private fun picturesFromGallery() {
binding.btnPictureGallery.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(checkSelfPermission(requireContext(), android.Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_DENIED){
val permissions = arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE)
// show popup to request runtime permission
requestPermissions(permissions, PERMISSION_CODE_IMAGE)
}else{
selectImageFromGallery()
}
}else{ // OS is < Marshmallow
selectImageFromGallery()
}
}
}
private fun selectImageFromGallery() {
val intent = Intent(Intent.ACTION_PICK)
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
intent.type = "image/*"
val chooserIntent = Intent.createChooser(intent, "Select Pictures")
startActivityForResult(chooserIntent, IMAGE_PICK_CODE)
}
@RequiresApi(Build.VERSION_CODES.KITKAT)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == Activity.RESULT_OK) {
when(requestCode){
IMAGE_PICK_CODE -> {
filesAdapter.uriData.clear()
if (data?.clipData != null) {
val filesSize = data.clipData!!.itemCount
var uriList: MutableList<Uri> = mutableListOf()
if (filesSize > 5) {
Toast.makeText(requireContext(), "이미지 첨부는 5장까지만 가능합니다.",
Toast.LENGTH_SHORT).show()
for (i in 0 until 5) {
var dataUri = data.clipData!!.getItemAt(i).uri
filesAdapter.uriData.add(dataUri)
uriList.add(absolutelyPath(dataUri).toUri())
}
viewModel.changeFilesUri(uriList as ArrayList<Uri>)
}
else {
for (i in 0 until filesSize) {
var dataUri = data.clipData!!.getItemAt(i).uri
filesAdapter.uriData.add(dataUri)
uriList.add(absolutelyPath(dataUri).toUri())
}
viewModel.changeFilesUri(uriList as ArrayList<Uri>)
} binding.rvPicture.visibility = View.VISIBLE
binding.clLoadCamera.visibility = View.INVISIBLE
}
}
}
}
}
if(!viewModel.issueFilesUri.value.isNullOrEmpty()){
for (i in 0 until viewModel.issueFilesUri.value!!.size) {
val file = File(viewModel.issueFilesUri.value!![i].toString())
var requestBody : RequestBody = RequestBody.create(MediaType.parse("image/*"), file)
imageParts.add(MultipartBody.Part.createFormData("issue_img", file.name, requestBody))
}
filesCall = HousingServiceImpl.service.postCommunicationFiles(token, imageParts)
}
else{
filesCall = HousingServiceImpl.service.postCommunicationNoFiles(token)
}
filesCall.enqueue(object : Callback<ResponseAskFileData> {
override fun onResponse(call: Call<ResponseAskFileData>, response: Response<ResponseAskFileData>) {
response.takeIf { it.isSuccessful }
?.body()
?.let {
Log.e("asd", it.data.issue_id.toString())
requestContent(token, it.data.issue_id)
}?:showError(response.errorBody())
}
override fun onFailure(call: Call<ResponseAskFileData>, t: Throwable) {
}
})
private fun picturesFromGallery() {
binding.btnPictureGallery.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(checkSelfPermission(requireContext(), android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED){
// permission denied
val permissions = arrayOf(android.Manifest.permission.CAMERA)
// show popup to request runtime permission
requestPermissions(permissions, PERMISSION_CODE_CAMERA)
}else{
takeImage()
}
}else{ // OS is < Marshmallow
takeImage()
}
}
}
private fun takeImage() {
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, CAMERA_CAPTURE_CODE)
}
@RequiresApi(Build.VERSION_CODES.KITKAT)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == Activity.RESULT_OK) {
when(requestCode){
CAMERA_CAPTURE_CODE -> {
var bmp = data?.extras!!.get("data") as Bitmap
binding.ivPictureLoadPicture.setImageBitmap(bmp)
binding.clLoadCamera.visibility = View.VISIBLE
binding.rvPicture.visibility = View.INVISIBLE
viewModel.changeFileBitmap(bmp)
}
}
}
}
if(viewModel.issueFileBitmap.value != null){
val bitmap = viewModel.issueFileBitmap.value
val file = savebitmap(bitmap!!)
var requestBody : RequestBody = RequestBody.create(
MediaType.parse("image/*"),
file
)
imageParts.add(
MultipartBody.Part.createFormData("photo", file!!.name, requestBody)
)
filesCall = HousingServiceImpl.service.postCommunicationFiles(token, imageParts)
}
filesCall.enqueue(object : Callback<ResponseAskFileData> {
override fun onResponse(call: Call<ResponseAskFileData>, response: Response<ResponseAskFileData>) {
response.takeIf { it.isSuccessful }
?.body()
?.let {
Log.e("asd", it.data.issue_id.toString())
requestContent(token, it.data.issue_id)
}?:showError(response.errorBody())
}
override fun onFailure(call: Call<ResponseAskFileData>, t: Throwable) {
}
})
private fun selectDate() {
val calendar = Calendar.getInstance()
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val day = calendar.get(Calendar.DATE)
val minDate = Calendar.getInstance()
minDate.set(year, month, day)
editTextIsChanged(binding.edtTimeDate)
binding.edtTimeDate.setOnFocusChangeListener { _, chk ->
if(chk){
val datePickerDialog = DatePickerDialog(this,{ _, year, month, day ->
promiseDate = changeDateFormat(year,month+1, day)
binding.edtTimeDate.setText(promiseDate)
}, year, month, day)
datePickerDialog.datePicker.minDate = minDate.time.time
datePickerDialog.show()
binding.edtTimeDate.clearFocus()
}
}
}
private fun selectTime(edt: EditText) {
editTextIsChanged(edt)
val dialogBinding : DialogTimePickerBinding = DataBindingUtil.inflate(
LayoutInflater.from(this), R.layout.dialog_time_picker, null, false )
edt.setOnFocusChangeListener { _, chk ->
if(chk){
edt.clearFocus()
val alertDialog = AlertDialog.Builder(this)
val dialog: AlertDialog = alertDialog.create()
if(dialogBinding.root.parent != null){
val viewGroup : ViewGroup = dialogBinding.root.parent as ViewGroup
viewGroup.removeView(dialogBinding.root)
}
dialogBinding.btnDatePickerCancel.setOnClickListener {
dialog.dismiss()
dialog.cancel()
edt.clearFocus()
}
dialogBinding.btnDatePickerOk.setOnClickListener {
val tempTime = changeHourFormat(dialogBinding.pckHour.value,
dialogBinding.pckMeridian.value)
edt.setText(tempTime + "시")
dialog.dismiss()
dialog.cancel()
edt.clearFocus()
if(edt == binding.edtTimeStartTime){
promiseStartTime = tempTime
}
else{
promiseEndTime = tempTime
}
}
dialogBinding.pckHour.wrapSelectorWheel = false
dialogBinding.pckMeridian.wrapSelectorWheel = false
dialogBinding.pckMeridian.minValue = 0
dialogBinding.pckMeridian.maxValue = 1
dialogBinding.pckMeridian.displayedValues = arrayOf("AM", "PM")
dialogBinding.pckHour.minValue = 1
dialogBinding.pckHour.maxValue = 12
dialog.setView(dialogBinding.root)
dialog.show()
}
}
}