From 93d99192b3e66f7e75478db6e88c7823e367a7db Mon Sep 17 00:00:00 2001 From: davidoskky Date: Tue, 11 Mar 2025 15:56:10 +0100 Subject: [PATCH] Don't restart activity changing alignment When changing alignment in the reader we were restarting the reader activity to reload. Doing this led to reloading the article which was initially opened every time you changed alignment. Now, when changing the alignment we retain all existing fragments but command all of them to update their alignment setting. --- .../android/ReaderActivity.kt | 28 ++++++++----------- .../android/fragments/ArticleFragment.kt | 4 ++- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt index 55f42ac..013432c 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt @@ -209,28 +209,24 @@ class ReaderActivity : } } - R.id.align_left -> { - switchAlignmentSetting(AppSettingsService.ALIGN_LEFT) - refreshFragment() - } + R.id.align_left -> switchAlignmentSetting(AppSettingsService.ALIGN_LEFT) - R.id.align_justify -> { - switchAlignmentSetting(AppSettingsService.JUSTIFY) - refreshFragment() - } + R.id.align_justify -> switchAlignmentSetting(AppSettingsService.JUSTIFY) } return super.onOptionsItemSelected(item) } - private fun switchAlignmentSetting(allignment: Int) { - appSettingsService.changeAllignment(allignment) + private fun switchAlignmentSetting(alignment: Int) { + appSettingsService.changeAllignment(alignment) alignmentMenu() - } - private fun refreshFragment() { - finish() - overridePendingTransition(0, 0) - startActivity(intent) - overridePendingTransition(0, 0) + val fragmentManager = supportFragmentManager + val fragments = fragmentManager.fragments + + for (fragment in fragments) { + if (fragment is ArticleFragment) { + fragment.refreshAlignment() + } + } } } diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt index 671c20b..b7e2f95 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt @@ -263,13 +263,15 @@ class ArticleFragment : ) } - private fun refreshAlignment() { + fun refreshAlignment() { textAlignment = when (appSettingsService.getActiveAllignment()) { 1 -> "justify" 2 -> "left" else -> "justify" } + + htmlToWebview() } @Suppress("detekt:SwallowedException")