11package com.simplemobiletools.filemanager.pro.dialogs
22
33import android.view.View
4+ import android.widget.ArrayAdapter
45import androidx.appcompat.app.AlertDialog
56import com.simplemobiletools.commons.activities.BaseSimpleActivity
67import com.simplemobiletools.commons.dialogs.FilePickerDialog
78import com.simplemobiletools.commons.extensions.*
89import com.simplemobiletools.filemanager.pro.R
910import com.simplemobiletools.filemanager.pro.databinding.DialogCompressAsBinding
1011import com.simplemobiletools.filemanager.pro.extensions.config
12+ import com.simplemobiletools.filemanager.pro.helpers.CompressionFormat
1113
12- class CompressAsDialog (val activity : BaseSimpleActivity , val path : String , val callback : (destination: String , password: String? ) -> Unit ) {
14+ class CompressAsDialog (
15+ val activity : BaseSimpleActivity ,
16+ val path : String ,
17+ val callback : (destination: String , compressionFormat: CompressionFormat , password: String? ) -> Unit
18+ ) {
1319 private val binding = DialogCompressAsBinding .inflate(activity.layoutInflater)
1420
1521 init {
@@ -29,6 +35,21 @@ class CompressAsDialog(val activity: BaseSimpleActivity, val path: String, val c
2935 }
3036 }
3137
38+ compressionFormatValue.apply {
39+ setOnClickListener {
40+ activity.hideKeyboard(filenameValue)
41+ }
42+ val adapter = ArrayAdapter (activity, android.R .layout.simple_dropdown_item_1line, CompressionFormat .values().map { it.extension })
43+ setAdapter(adapter)
44+ setText(adapter.getItem(0 ), false )
45+
46+ setOnItemClickListener { _, _, i, _ ->
47+ val compressionFormat = CompressionFormat .entries[i]
48+ filenameHint.hint = String .format(activity.getString(R .string.filename_without_extension), compressionFormat.extension)
49+ passwordProtect.beVisibleIf(compressionFormat.canCreateEncryptedArchive)
50+ enterPasswordHint.beVisibleIf(compressionFormat.canCreateEncryptedArchive && passwordProtect.isChecked)
51+ }
52+ }
3253 passwordProtect.setOnCheckedChangeListener { _, _ ->
3354 enterPasswordHint.beVisibleIf(passwordProtect.isChecked)
3455 }
@@ -53,14 +74,14 @@ class CompressAsDialog(val activity: BaseSimpleActivity, val path: String, val c
5374 when {
5475 name.isEmpty() -> activity.toast(R .string.empty_name)
5576 name.isAValidFilename() -> {
56- val newPath = " $realPath /$name .zip "
77+ val newPath = " $realPath /$name${getSelectedCompressionFormat().extension} "
5778 if (activity.getDoesFilePathExist(newPath)) {
5879 activity.toast(R .string.name_taken)
5980 return @OnClickListener
6081 }
6182
6283 alertDialog.dismiss()
63- callback(newPath, password)
84+ callback(newPath, getSelectedCompressionFormat(), password)
6485 }
6586
6687 else -> activity.toast(R .string.invalid_name)
@@ -69,4 +90,6 @@ class CompressAsDialog(val activity: BaseSimpleActivity, val path: String, val c
6990 }
7091 }
7192 }
93+
94+ private fun getSelectedCompressionFormat () = CompressionFormat .fromExtension(binding.compressionFormatValue.text.toString())
7295}
0 commit comments