Skip to content

Commit aa247e9

Browse files
committed
add new compression formats to compression dialog
1 parent 6ab71cf commit aa247e9

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/dialogs/CompressAsDialog.kt

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package com.simplemobiletools.filemanager.pro.dialogs
22

33
import android.view.View
4+
import android.widget.ArrayAdapter
45
import androidx.appcompat.app.AlertDialog
56
import com.simplemobiletools.commons.activities.BaseSimpleActivity
67
import com.simplemobiletools.commons.dialogs.FilePickerDialog
78
import com.simplemobiletools.commons.extensions.*
89
import com.simplemobiletools.filemanager.pro.R
910
import com.simplemobiletools.filemanager.pro.databinding.DialogCompressAsBinding
1011
import 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
}

app/src/main/res/layout/dialog_compress_as.xml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,28 @@
2424
</com.simplemobiletools.commons.views.MyTextInputLayout>
2525

2626
<com.simplemobiletools.commons.views.MyTextInputLayout
27-
android:id="@+id/filename_hint"
27+
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
28+
android:id="@+id/compression_format_hint"
2829
android:layout_width="match_parent"
2930
android:layout_height="wrap_content"
3031
android:layout_below="@+id/folder_hint"
32+
android:layout_marginBottom="@dimen/activity_margin"
33+
android:hint="@string/compression_format">
34+
35+
<AutoCompleteTextView
36+
android:id="@+id/compression_format_value"
37+
android:layout_width="match_parent"
38+
android:layout_height="wrap_content"
39+
android:inputType="none"
40+
android:textSize="@dimen/bigger_text_size" />
41+
42+
</com.simplemobiletools.commons.views.MyTextInputLayout>
43+
44+
<com.simplemobiletools.commons.views.MyTextInputLayout
45+
android:id="@+id/filename_hint"
46+
android:layout_width="match_parent"
47+
android:layout_height="wrap_content"
48+
android:layout_below="@+id/compression_format_hint"
3149
android:hint="@string/filename_without_zip">
3250

3351
<com.google.android.material.textfield.TextInputEditText

app/src/main/res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
<string name="decompression_successful">Decompression successful</string>
3636
<string name="compressing_failed">Compressing failed</string>
3737
<string name="decompressing_failed">Decompressing failed</string>
38+
<!-- TODO: add missing translations-->
39+
<string name="compression_format">Compression format</string>
40+
<!-- TODO: move to commons-->
41+
<string name="filename_without_extension">Filename (without %s)</string>
3842

3943
<!-- Favorites -->
4044
<string name="manage_favorites">Manage favorites</string>

0 commit comments

Comments
 (0)