@@ -30,8 +30,10 @@ import android.view.View
30
30
import android.widget.Toast
31
31
import androidx.appcompat.app.AppCompatActivity
32
32
import androidx.core.content.ContextCompat
33
+ import com.google.android.material.chip.Chip
33
34
import com.google.android.material.dialog.MaterialAlertDialogBuilder
34
35
import com.wirelessalien.zipxtract.R
36
+ import com.wirelessalien.zipxtract.databinding.DialogArchiveTypeBinding
35
37
import com.wirelessalien.zipxtract.databinding.DialogCrashLogBinding
36
38
import com.wirelessalien.zipxtract.databinding.PasswordInputOpenWithBinding
37
39
import com.wirelessalien.zipxtract.service.ExtractArchiveService
@@ -172,7 +174,7 @@ class OpenWithActivity : AppCompatActivity() {
172
174
if (filePaths.isNotEmpty()) {
173
175
showArchiveTypeDialog(filePaths)
174
176
} else {
175
- Toast .makeText(this @OpenWithActivity, getString(R .string.no_file_selected), Toast .LENGTH_SHORT ).show() // Assuming new string
177
+ Toast .makeText(this @OpenWithActivity, getString(R .string.no_file_selected), Toast .LENGTH_SHORT ).show()
176
178
finish()
177
179
}
178
180
}
@@ -186,18 +188,36 @@ class OpenWithActivity : AppCompatActivity() {
186
188
finish()
187
189
return
188
190
}
191
+ val binding = DialogArchiveTypeBinding .inflate(layoutInflater)
192
+ val chipGroup = binding.chipGroupArchiveTypes
193
+
189
194
val archiveTypes = arrayOf(" ZIP" , " 7Z" , " TAR" )
195
+ archiveTypes.forEach { type ->
196
+ val chip = Chip (this ).apply {
197
+ text = type
198
+ isCheckable = true
199
+ }
200
+ chipGroup.addView(chip)
201
+ }
202
+
190
203
MaterialAlertDialogBuilder (this , R .style.MaterialDialog )
191
204
.setTitle(getString(R .string.select_archive_type_title))
192
- .setItems(archiveTypes) { _, which ->
193
- val selectedType = archiveTypes[which]
194
- val mainActivityIntent = Intent (this , MainActivity ::class .java).apply {
195
- action = MainActivity .ACTION_CREATE_ARCHIVE
196
- putStringArrayListExtra(MainActivity .EXTRA_FILE_PATHS , ArrayList (filePaths))
197
- putExtra(MainActivity .EXTRA_ARCHIVE_TYPE , selectedType)
205
+ .setView(binding.root)
206
+ .setPositiveButton(getString(R .string.ok)) { _, _ ->
207
+ val selectedChipId = chipGroup.checkedChipId
208
+ if (selectedChipId != View .NO_ID ) {
209
+ val selectedChip = chipGroup.findViewById<Chip >(selectedChipId)
210
+ val selectedType = selectedChip.text.toString()
211
+ val mainActivityIntent = Intent (this , MainActivity ::class .java).apply {
212
+ action = MainActivity .ACTION_CREATE_ARCHIVE
213
+ putStringArrayListExtra(MainActivity .EXTRA_FILE_PATHS , ArrayList (filePaths))
214
+ putExtra(MainActivity .EXTRA_ARCHIVE_TYPE , selectedType)
215
+ }
216
+ startActivity(mainActivityIntent)
217
+ finish()
218
+ } else {
219
+ Toast .makeText(this , getString(R .string.general_error_msg), Toast .LENGTH_SHORT ).show()
198
220
}
199
- startActivity(mainActivityIntent)
200
- finish()
201
221
}
202
222
.setOnCancelListener {
203
223
finish()
0 commit comments