From ac38cf9048184fd143834e38afb210a547593378 Mon Sep 17 00:00:00 2001 From: Burgerpower01 <61335974+Burgerpower01@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:34:10 +0200 Subject: [PATCH 1/2] Fixed Text File Editor loosing unsaved changes when rotating screen --- .../activities/ReadTextActivity.kt | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt index 819e4c7ab..39482e7d0 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt @@ -35,6 +35,7 @@ class ReadTextActivity : SimpleActivity() { } private val binding by viewBinding(ActivityReadTextBinding::inflate) + private val keyUnsavedText = "KEY_UNSAVED_TEXT" private var filePath = "" private var originalText = "" @@ -85,7 +86,7 @@ class ReadTextActivity : SimpleActivity() { binding.readTextView.onGlobalLayout { ensureBackgroundThread { - checkIntent(uri) + checkIntent(uri, savedInstanceState) } } @@ -97,6 +98,13 @@ class ReadTextActivity : SimpleActivity() { setupToolbar(binding.readTextToolbar, NavigationIcon.Arrow) } + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + if (originalText != binding.readTextView.text.toString()) { + outState.putString(keyUnsavedText, binding.readTextView.text.toString()) + } + } + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { super.onActivityResult(requestCode, resultCode, resultData) if (requestCode == SELECT_SAVE_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null) { @@ -241,7 +249,7 @@ class ReadTextActivity : SimpleActivity() { } } - private fun checkIntent(uri: Uri) { + private fun checkIntent(uri: Uri, savedInstanceState: Bundle?) { originalText = if (uri.scheme == "file") { filePath = uri.path!! val file = File(filePath) @@ -270,7 +278,13 @@ class ReadTextActivity : SimpleActivity() { } runOnUiThread { - binding.readTextView.setText(originalText) + var textToSet = originalText + + if (savedInstanceState != null) { + textToSet = savedInstanceState.getString(keyUnsavedText, originalText) + } + + binding.readTextView.setText(textToSet) if (originalText.isNotEmpty()) { hideKeyboard() } else { From 4308ded7e845f60e8dde62bfa426e9b9c0f39d3f Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Wed, 21 May 2025 11:42:51 +0530 Subject: [PATCH 2/2] style: replace state variable with constant --- .../org/fossify/filemanager/activities/ReadTextActivity.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt index 39482e7d0..c01aed371 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt @@ -32,10 +32,10 @@ class ReadTextActivity : SimpleActivity() { companion object { private const val SELECT_SAVE_FILE_INTENT = 1 private const val SELECT_SAVE_FILE_AND_EXIT_INTENT = 2 + private const val KEY_UNSAVED_TEXT = "KEY_UNSAVED_TEXT" } private val binding by viewBinding(ActivityReadTextBinding::inflate) - private val keyUnsavedText = "KEY_UNSAVED_TEXT" private var filePath = "" private var originalText = "" @@ -101,7 +101,7 @@ class ReadTextActivity : SimpleActivity() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) if (originalText != binding.readTextView.text.toString()) { - outState.putString(keyUnsavedText, binding.readTextView.text.toString()) + outState.putString(KEY_UNSAVED_TEXT, binding.readTextView.text.toString()) } } @@ -281,7 +281,7 @@ class ReadTextActivity : SimpleActivity() { var textToSet = originalText if (savedInstanceState != null) { - textToSet = savedInstanceState.getString(keyUnsavedText, originalText) + textToSet = savedInstanceState.getString(KEY_UNSAVED_TEXT, originalText) } binding.readTextView.setText(textToSet)