EtchDroid/app/src/main/java/eu/depau/etchdroid/activities/MainActivity.kt

103 lines
3.7 KiB
Kotlin
Raw Normal View History

2018-08-15 17:04:45 +00:00
package eu.depau.etchdroid.activities
2018-08-12 14:33:11 +00:00
2018-08-13 23:32:02 +00:00
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager
2018-08-12 14:33:11 +00:00
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
2018-08-15 17:04:45 +00:00
import eu.depau.etchdroid.R
import eu.depau.etchdroid.StateKeeper
import eu.depau.etchdroid.fragments.WizardFragment
2018-08-15 17:04:45 +00:00
import eu.depau.etchdroid.fragments.FlashMethodFragment
import eu.depau.etchdroid.fragments.UsbDriveFragment
2018-08-12 14:33:11 +00:00
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : WizardActivity() {
2018-08-13 23:32:02 +00:00
val TAG = "MainActivity"
2018-08-15 17:04:45 +00:00
val ACTION_USB_PERMISSION = "eu.depau.etchdroid.USB_PERMISSION"
2018-08-13 23:32:02 +00:00
lateinit var mUsbPermissionIntent: PendingIntent
private val mUsbReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == ACTION_USB_PERMISSION) {
synchronized(this) {
val device: UsbDevice? = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE)
val result = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)
if (result)
device?.apply {
StateKeeper.usbDevice = this
}
if (StateKeeper.currentFragment is UsbDriveFragment)
(StateKeeper.currentFragment as UsbDriveFragment).onUsbPermissionResult(device, result)
}
}
}
}
2018-08-12 14:33:11 +00:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener(::nextStep)
// Create new fragment and transaction
val fragment = FlashMethodFragment()
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_layout, fragment)
transaction.commit()
fragment.onFragmentAdded(this)
2018-08-13 23:32:02 +00:00
val usbManager = getSystemService(Context.USB_SERVICE) as UsbManager
mUsbPermissionIntent = PendingIntent.getBroadcast(this, 0, Intent(ACTION_USB_PERMISSION), 0)
val filter = IntentFilter(ACTION_USB_PERMISSION)
registerReceiver(mUsbReceiver, filter)
2018-08-12 14:33:11 +00:00
}
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(mUsbReceiver)
}
2018-08-12 14:33:11 +00:00
override fun goToNewFragment(fragment: WizardFragment) {
2018-08-13 23:32:02 +00:00
StateKeeper.currentFragment?.onFragmentRemoving(this)
2018-08-12 14:33:11 +00:00
val transaction = supportFragmentManager.beginTransaction()
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
transaction.replace(R.id.fragment_layout, fragment)
transaction.addToBackStack(null)
transaction.commit()
2018-08-13 23:32:02 +00:00
2018-08-12 14:33:11 +00:00
fragment.onFragmentAdded(this)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
2018-08-30 17:10:48 +00:00
R.id.action_licenses -> {
val intent = Intent(this, LicensesActivity::class.java)
startActivity(intent)
return true
}
2018-08-12 14:33:11 +00:00
else -> super.onOptionsItemSelected(item)
}
}
}