diff --git a/app/src/main/java/de/mlte/soundboard/MainActivity.kt b/app/src/main/java/de/mlte/soundboard/MainActivity.kt index 9a5e58b..f8f73a4 100644 --- a/app/src/main/java/de/mlte/soundboard/MainActivity.kt +++ b/app/src/main/java/de/mlte/soundboard/MainActivity.kt @@ -3,8 +3,6 @@ package de.mlte.soundboard import android.animation.Animator import android.animation.ValueAnimator import android.app.Activity -import android.content.Context -import android.content.Intent import android.content.res.Configuration.ORIENTATION_LANDSCAPE import android.net.Uri import android.os.Bundle @@ -17,10 +15,9 @@ import android.view.animation.LinearInterpolator import android.widget.GridLayout import java.io.BufferedInputStream import java.io.BufferedOutputStream -import android.content.ComponentName import android.os.IBinder -import android.content.ServiceConnection import android.animation.AnimatorListenerAdapter +import android.content.* import android.util.Log class MainActivity : AppCompatActivity() { @@ -249,53 +246,61 @@ class MainActivity : AppCompatActivity() { val parent = findViewById(R.id.grid_layout) parent.removeView(button) saveNumButtons() + saveAllButtons() organizeButtons() - // TODO: Do we need to remove some preferences? } else { val caption = data.getStringExtra("caption") if (caption != null) { textView.text = caption } - val uri = data.getParcelableExtra("uri") + val uri = data.getParcelableExtra("uri") val fileName = data.getStringExtra("fileName") if (fileName != null) { button.fileName = fileName } - savePreferences(uri, index) + uri?.let{ u -> saveAudio(u, index) } + saveButton(index) } } } } - private fun savePreferences(uri: Uri?, index: Int) { - if (index > -1 && index < buttons.size) { - val textView = buttons[index].textView - val soundId = buttons[index].soundId - val editor = getPreferences(Context.MODE_PRIVATE).edit() - editor.putString("caption" + index, textView.text.toString()) - editor.putString("fileName" + index, buttons[index].fileName) - editor.apply() - - uri?.let { u -> - deleteFile("audio" + soundId) - val newSoundId = System.currentTimeMillis() - buttons[index].soundId = newSoundId - editor.putLong("soundId" + index, newSoundId) - editor.commit() - grantUriPermission(packageName, u, Intent.FLAG_GRANT_READ_URI_PERMISSION) - val output = BufferedOutputStream(openFileOutput("audio" + newSoundId, Context.MODE_PRIVATE)) - val input = BufferedInputStream(contentResolver.openInputStream(u)) - try { - val buf = ByteArray(1024) - input.read(buf) - do { - output.write(buf) - } while (input.read(buf) != -1) - } finally { - input.close() - output.close() - } - } + private fun storeButton(editor: SharedPreferences.Editor, index: Int) { + val button = buttons[index] + editor.putString("caption" + index, button.textView.text.toString()) + editor.putLong("soundId" + index, button.soundId) + editor.putString("fileName" + index, buttons[index].fileName) + } + + private fun saveButton(index: Int) { + val editor = getPreferences(Context.MODE_PRIVATE).edit() + storeButton(editor, index) + editor.apply() + } + + private fun saveAllButtons() { + val editor = getPreferences(Context.MODE_PRIVATE).edit() + buttons.forEachIndexed{ index, _ -> storeButton(editor, index) } + editor.apply() + } + + private fun saveAudio(uri: Uri, index: Int) { + val soundId = buttons[index].soundId + deleteFile("audio" + soundId) + val newSoundId = System.currentTimeMillis() + buttons[index].soundId = newSoundId + grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION) + val output = BufferedOutputStream(openFileOutput("audio" + newSoundId, Context.MODE_PRIVATE)) + val input = BufferedInputStream(contentResolver.openInputStream(uri)) + try { + val buf = ByteArray(1024) + input.read(buf) + do { + output.write(buf) + } while (input.read(buf) != -1) + } finally { + input.close() + output.close() } }