11package com.anggrayudi.storage.sample.activity
22
33import android.os.Bundle
4- import android.view.View
4+ import android.widget.TextView
55import android.widget.Toast
66import androidx.documentfile.provider.DocumentFile
77import com.anggrayudi.storage.callback.ZipCompressionCallback
88import com.anggrayudi.storage.file.MimeType
99import com.anggrayudi.storage.file.compressToZip
1010import com.anggrayudi.storage.file.fullName
1111import com.anggrayudi.storage.file.getAbsolutePath
12- import com.anggrayudi.storage.sample.R
13- import kotlinx.android.synthetic.main.activity_file_compression.*
14- import kotlinx.android.synthetic.main.view_file_picked.view.*
12+ import com.anggrayudi.storage.sample.databinding.ActivityFileCompressionBinding
1513import kotlinx.coroutines.launch
1614import timber.log.Timber
1715
@@ -21,71 +19,75 @@ import timber.log.Timber
2119 */
2220class FileCompressionActivity : BaseActivity () {
2321
22+ private lateinit var binding: ActivityFileCompressionBinding
23+
2424 override fun onCreate (savedInstanceState : Bundle ? ) {
2525 super .onCreate(savedInstanceState)
26- setContentView(R .layout.activity_file_compression)
26+ binding = ActivityFileCompressionBinding .inflate(layoutInflater)
27+ setContentView(binding.root)
28+
2729 setupSimpleStorage()
28- btnStartCompress.setOnClickListener { startCompress() }
30+ binding. btnStartCompress.setOnClickListener { startCompress() }
2931 }
3032
3133 private fun setupSimpleStorage () {
3234 storageHelper.onFileCreated = { _, file ->
33- layoutCompressFiles_destZipFile .updateFileSelectionView(file)
35+ binding.layoutCompressFilesDestZipFile.tvFilePath .updateFileSelectionView(file)
3436 }
35- layoutCompressFiles_destZipFile .btnBrowse.setOnClickListener {
37+ binding.layoutCompressFilesDestZipFile .btnBrowse.setOnClickListener {
3638 storageHelper.createFile(MimeType .ZIP , " Test compress" )
3739 }
3840
3941 storageHelper.onFileSelected = { requestCode, files ->
4042 when (requestCode) {
41- REQUEST_CODE_PICK_MEDIA_1 -> layoutCompressFiles_srcMedia1 .updateFileSelectionView(files)
42- REQUEST_CODE_PICK_MEDIA_2 -> layoutCompressFiles_srcMedia2 .updateFileSelectionView(files)
43+ REQUEST_CODE_PICK_MEDIA_1 -> binding.layoutCompressFilesSrcMedia1.tvFilePath .updateFileSelectionView(files)
44+ REQUEST_CODE_PICK_MEDIA_2 -> binding.layoutCompressFilesSrcMedia2.tvFilePath .updateFileSelectionView(files)
4345 }
4446 }
45- layoutCompressFiles_srcMedia1 .btnBrowse.setOnClickListener {
47+ binding.layoutCompressFilesSrcMedia1 .btnBrowse.setOnClickListener {
4648 storageHelper.openFilePicker(REQUEST_CODE_PICK_MEDIA_1 , true )
4749 }
48- layoutCompressFiles_srcMedia2 .btnBrowse.setOnClickListener {
50+ binding.layoutCompressFilesSrcMedia2 .btnBrowse.setOnClickListener {
4951 storageHelper.openFilePicker(REQUEST_CODE_PICK_MEDIA_2 , true )
5052 }
5153
5254 storageHelper.onFolderSelected = { requestCode, folder ->
5355 when (requestCode) {
54- REQUEST_CODE_PICK_FOLDER_1 -> layoutCompressFiles_srcFolder1 .updateFileSelectionView(folder)
55- REQUEST_CODE_PICK_FOLDER_2 -> layoutCompressFiles_srcFolder2 .updateFileSelectionView(folder)
56+ REQUEST_CODE_PICK_FOLDER_1 -> binding.layoutCompressFilesSrcFolder1.tvFilePath .updateFileSelectionView(folder)
57+ REQUEST_CODE_PICK_FOLDER_2 -> binding.layoutCompressFilesSrcFolder2.tvFilePath .updateFileSelectionView(folder)
5658 }
5759 }
58- layoutCompressFiles_srcFolder1 .btnBrowse.setOnClickListener {
60+ binding.layoutCompressFilesSrcFolder1 .btnBrowse.setOnClickListener {
5961 storageHelper.openFolderPicker(REQUEST_CODE_PICK_FOLDER_1 )
6062 }
61- layoutCompressFiles_srcFolder2 .btnBrowse.setOnClickListener {
63+ binding.layoutCompressFilesSrcFolder2 .btnBrowse.setOnClickListener {
6264 storageHelper.openFolderPicker(REQUEST_CODE_PICK_FOLDER_2 )
6365 }
6466 }
6567
66- private fun View .updateFileSelectionView (files : List <DocumentFile >) {
68+ private fun TextView .updateFileSelectionView (files : List <DocumentFile >) {
6769 tag = files
68- tvFilePath. text = files.joinToString(" , " ) { it.fullName }
70+ text = files.joinToString(" , " ) { it.fullName }
6971 }
7072
71- private fun View .updateFileSelectionView (file : DocumentFile ) {
73+ private fun TextView .updateFileSelectionView (file : DocumentFile ) {
7274 tag = file
73- tvFilePath. text = file.getAbsolutePath(context)
75+ text = file.getAbsolutePath(context)
7476 }
7577
7678 @Suppress(" UNCHECKED_CAST" )
7779 private fun startCompress () {
78- val targetZip = layoutCompressFiles_destZipFile .tag as ? DocumentFile
80+ val targetZip = binding.layoutCompressFilesDestZipFile.tvFilePath .tag as ? DocumentFile
7981 if (targetZip == null ) {
8082 Toast .makeText(this , " Please select destination ZIP file" , Toast .LENGTH_SHORT ).show()
8183 return
8284 }
8385
8486 val files = mutableListOf<DocumentFile >()
85- (layoutCompressFiles_srcMedia1 .tag as ? List <DocumentFile >)?.let { files.addAll(it) }
86- (layoutCompressFiles_srcMedia2 .tag as ? List <DocumentFile >)?.let { files.addAll(it) }
87- (layoutCompressFiles_srcFolder1 .tag as ? DocumentFile )?.let { files.add(it) }
88- (layoutCompressFiles_srcFolder2 .tag as ? DocumentFile )?.let { files.add(it) }
87+ (binding.layoutCompressFilesSrcMedia1.tvFilePath .tag as ? List <DocumentFile >)?.let { files.addAll(it) }
88+ (binding.layoutCompressFilesSrcMedia2.tvFilePath .tag as ? List <DocumentFile >)?.let { files.addAll(it) }
89+ (binding.layoutCompressFilesSrcFolder1.tvFilePath .tag as ? DocumentFile )?.let { files.add(it) }
90+ (binding.layoutCompressFilesSrcFolder2.tvFilePath .tag as ? DocumentFile )?.let { files.add(it) }
8991
9092 ioScope.launch {
9193 files.compressToZip(applicationContext, targetZip, callback = object : ZipCompressionCallback <DocumentFile >(uiScope) {
0 commit comments