DroidFS/app/src/main/java/sushi/hardcore/droidfs/MainActivity.kt

125 lines
4.7 KiB
Kotlin
Raw Normal View History

2020-07-17 16:35:39 +02:00
package sushi.hardcore.droidfs
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.util.DisplayMetrics
import android.view.*
import androidx.core.content.ContextCompat
2020-07-19 19:42:59 +02:00
import com.bumptech.glide.Glide
2020-07-17 16:35:39 +02:00
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.toolbar.*
2020-07-27 16:20:52 +02:00
import sushi.hardcore.droidfs.widgets.ColoredAlertDialogBuilder
2020-07-17 16:35:39 +02:00
2020-07-21 15:05:05 +02:00
class MainActivity : BaseActivity() {
2020-07-17 16:35:39 +02:00
companion object {
private const val STORAGE_PERMISSIONS_REQUEST = 1
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
2020-10-22 22:14:22 +02:00
if (!isRecreating){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) +
2020-07-17 16:35:39 +02:00
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
2020-10-22 22:14:22 +02:00
requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), STORAGE_PERMISSIONS_REQUEST)
} else {
onStoragePermissionGranted()
2020-08-12 16:14:26 +02:00
}
2020-10-22 22:14:22 +02:00
} else {
onStoragePermissionGranted()
2020-07-17 16:35:39 +02:00
}
}
2020-10-22 22:14:22 +02:00
}
private fun onStoragePermissionGranted(){
if (checkStorageAvailability()){
checkFirstOpening()
}
2020-08-12 16:14:26 +02:00
}
private fun checkStorageAvailability(): Boolean {
2020-07-17 16:35:39 +02:00
val state = Environment.getExternalStorageState()
val storageAvailable = Environment.MEDIA_MOUNTED == state || Environment.MEDIA_MOUNTED_READ_ONLY == state
2020-08-12 16:14:26 +02:00
return if (!storageAvailable) {
2020-07-27 16:20:52 +02:00
ColoredAlertDialogBuilder(this)
2020-08-12 16:14:26 +02:00
.setTitle(R.string.storage_unavailable)
.setMessage(R.string.storage_unavailable_msg)
.setCancelable(false)
.setPositiveButton(R.string.ok) { _, _ -> finish() }.show()
false
} else {
true
2020-07-17 16:35:39 +02:00
}
2020-08-12 16:14:26 +02:00
}
private fun checkFirstOpening() {
if (sharedPrefs.getBoolean("applicationFirstOpening", true)){
2020-07-27 16:20:52 +02:00
ColoredAlertDialogBuilder(this)
2020-08-12 16:14:26 +02:00
.setTitle(R.string.warning)
.setMessage(R.string.usf_home_warning_msg)
.setCancelable(false)
.setPositiveButton(R.string.see_unsafe_features){ _, _ ->
val intent = Intent(this, SettingsActivity::class.java)
intent.putExtra("screen", "UnsafeFeaturesSettingsFragment")
startActivity(intent)
}
.setNegativeButton(R.string.ok, null)
.setOnDismissListener { sharedPrefs.edit().putBoolean("applicationFirstOpening", false).apply() }
.show()
2020-07-17 16:35:39 +02:00
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
when (requestCode) {
STORAGE_PERMISSIONS_REQUEST -> if (grantResults.size == 2) {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
2020-07-27 16:20:52 +02:00
ColoredAlertDialogBuilder(this)
2020-08-12 16:14:26 +02:00
.setTitle(R.string.storage_perm_denied)
.setMessage(R.string.storage_perm_denied_msg)
2020-10-22 22:14:22 +02:00
.setCancelable(false)
.setPositiveButton(R.string.ok) { _, _ -> finish() }.show()
2020-08-12 16:14:26 +02:00
} else {
2020-10-22 22:14:22 +02:00
onStoragePermissionGranted()
2020-07-17 16:35:39 +02:00
}
}
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.menu_settings -> {
val intent = Intent(this, SettingsActivity::class.java)
startActivity(intent)
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main_activity, menu)
return true
}
fun onClickCreate(v: View?) {
val intent = Intent(this, CreateActivity::class.java)
startActivity(intent)
}
fun onClickOpen(v: View?) {
val intent = Intent(this, OpenActivity::class.java)
startActivity(intent)
}
fun onClickChangePassword(v: View?) {
val intent = Intent(this, ChangePasswordActivity::class.java)
startActivity(intent)
}
}