Change DMG file picker to StorageChooser

Previous picker worked badly on Android P
This commit is contained in:
Davide Depau 2018-08-30 17:18:40 +02:00
parent 1b5fe483c6
commit c99833f0a6
4 changed files with 22 additions and 42 deletions

View file

@ -33,7 +33,7 @@ dependencies {
implementation 'com.android.support:gridlayout-v7:28.0.0-rc01'
api 'com.google.guava:guava:26.0-android'
implementation 'com.github.isabsent:filepicker:1.1.01'
implementation 'com.github.codekidX:storage-chooser:2.0.4.2'
// implementation 'com.github.mjdev:libaums:0.5.5'
implementation project(':libaums')
implementation project(':dmg2img')

View file

@ -1,25 +1,12 @@
package eu.depau.etchdroid.activities
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import com.github.isabsent.filepicker.SimpleFilePickerDialog
import eu.depau.etchdroid.StateKeeper
import eu.depau.etchdroid.fragments.WizardFragment
abstract class WizardActivity : AppCompatActivity(), SimpleFilePickerDialog.InteractionListenerString {
override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {
if (StateKeeper.currentFragment is SimpleFilePickerDialog.InteractionListenerString)
return (StateKeeper.currentFragment as SimpleFilePickerDialog.InteractionListenerString).onResult(dialogTag, which, extras)
throw RuntimeException("Wrong fragment fsType")
}
override fun showListItemDialog(title: String?, folderPath: String?, mode: SimpleFilePickerDialog.CompositeMode?, dialogTag: String?) {
if (StateKeeper.currentFragment is SimpleFilePickerDialog.InteractionListenerString)
return (StateKeeper.currentFragment as SimpleFilePickerDialog.InteractionListenerString).showListItemDialog(title, folderPath, mode, dialogTag)
}
abstract class WizardActivity : AppCompatActivity() {
abstract fun goToNewFragment(fragment: WizardFragment)
open fun onCheckBoxClicked(view: View) {

View file

@ -14,17 +14,17 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.github.isabsent.filepicker.SimpleFilePickerDialog
import com.codekidlabs.storagechooser.StorageChooser
import eu.depau.etchdroid.R
import eu.depau.etchdroid.StateKeeper
import eu.depau.etchdroid.activities.WizardActivity
import eu.depau.etchdroid.adapters.PartitionTableRecyclerViewAdapter
import eu.depau.etchdroid.kotlin_exts.getFileName
import eu.depau.etchdroid.kotlin_exts.snackbar
import eu.depau.etchdroid.enums.FlashMethod
import eu.depau.etchdroid.enums.ImageLocation
import eu.depau.etchdroid.enums.WizardStep
import eu.depau.etchdroid.img_types.DMGImage
import eu.depau.etchdroid.kotlin_exts.getFileName
import eu.depau.etchdroid.kotlin_exts.snackbar
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_select_location.*
import java.io.File
@ -33,8 +33,7 @@ import java.io.File
/**
* A placeholder fragment containing a simple view.
*/
class ImageLocationFragment : WizardFragment(), SimpleFilePickerDialog.InteractionListenerString {
class ImageLocationFragment : WizardFragment() {
val READ_REQUEST_CODE = 42
val MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 29
val TAG = "ImageLocationFragment"
@ -100,7 +99,21 @@ class ImageLocationFragment : WizardFragment(), SimpleFilePickerDialog.Interacti
FlashMethod.FLASH_DMG_API -> {
if (checkAndRequestStorageReadPerm()) {
val sdcard = Environment.getExternalStorageDirectory().absolutePath
showListItemDialog("Select a DMG file", sdcard, SimpleFilePickerDialog.CompositeMode.FILE_ONLY_DIRECT_CHOICE_IMMEDIATE, PICKER_DIALOG_TAG)
val chooser = StorageChooser.Builder()
.withActivity(activity)
.withFragmentManager(activity!!.fragmentManager)
.withMemoryBar(true)
.allowCustomPath(true)
.setType(StorageChooser.FILE_PICKER)
.customFilter(arrayListOf("dmg"))
.build()
chooser.show()
chooser.setOnSelectListener {
StateKeeper.imageFile = Uri.fromFile(File(it))
loadImageChanges(activity as WizardActivity)
}
}
}
FlashMethod.FLASH_UNETBOOTIN -> {
@ -259,25 +272,4 @@ class ImageLocationFragment : WizardFragment(), SimpleFilePickerDialog.Interacti
}
}
}
override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {
when (dialogTag) {
PICKER_DIALOG_TAG -> {
if (extras.containsKey(SimpleFilePickerDialog.SELECTED_SINGLE_PATH)) {
val path = extras.getString(SimpleFilePickerDialog.SELECTED_SINGLE_PATH)
StateKeeper.imageFile = Uri.fromFile(File(path))
loadImageChanges(activity as WizardActivity)
}
}
}
return false
}
override fun showListItemDialog(title: String?, folderPath: String?, mode: SimpleFilePickerDialog.CompositeMode?, dialogTag: String?) {
SimpleFilePickerDialog.build(folderPath, mode)
.title(title)
.show(this, dialogTag)
}
}

View file

@ -25,6 +25,7 @@ allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}