From 4fc1e36d04de96722b45d6995e10e744c7b794f3 Mon Sep 17 00:00:00 2001 From: Markus Fisch Date: Tue, 9 Jul 2024 19:37:06 +0200 Subject: [PATCH] Add a menu item to toggle screen brightness So this setting can be enabled/disabled where it's required, too. --- .../binaryeye/fragment/BarcodeFragment.kt | 38 ++++++++++++++++--- .../main/res/drawable/ic_action_bright.xml | 5 +++ app/src/main/res/menu/fragment_barcode.xml | 6 +++ 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_action_bright.xml diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/BarcodeFragment.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/BarcodeFragment.kt index b6e90a80..62148e21 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/BarcodeFragment.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/BarcodeFragment.kt @@ -57,6 +57,7 @@ class BarcodeFragment : Fragment() { private lateinit var barcode: Barcode<*> private lateinit var addToHistoryItem: MenuItem + private lateinit var brightenScreenItem: MenuItem private var currentBrightness = -1f; @@ -144,9 +145,9 @@ class BarcodeFragment : Fragment() { override fun onResume() { super.onResume() if (prefs.brightenScreen) { - activity?.let { - currentBrightness = it.getScreenBrightness() - it.setScreenBrightness(1f); + // Post to make sure brightenScreenItem is initialized. + view?.post { + brightenScreen() } } } @@ -154,8 +155,7 @@ class BarcodeFragment : Fragment() { override fun onPause() { super.onPause() if (currentBrightness > -1f) { - activity?.setScreenBrightness(currentBrightness); - currentBrightness = -1f + restoreScreenBrightness() } } @@ -167,6 +167,7 @@ class BarcodeFragment : Fragment() { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.fragment_barcode, menu) addToHistoryItem = menu.findItem(R.id.add_to_history) + brightenScreenItem = menu.findItem(R.id.brighten_screen) } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -193,6 +194,17 @@ class BarcodeFragment : Fragment() { true } + R.id.brighten_screen -> { + prefs.brightenScreen = if (currentBrightness > -1f) { + restoreScreenBrightness() + false + } else { + brightenScreen() + true + } + true + } + else -> super.onOptionsItemSelected(item) } } @@ -317,6 +329,22 @@ class BarcodeFragment : Fragment() { } } + private fun brightenScreen() { + activity?.let { + currentBrightness = it.getScreenBrightness() + it.setScreenBrightness(1f); + brightenScreenItem.isChecked = true + } + } + + private fun restoreScreenBrightness() { + if (currentBrightness > -1f) { + activity?.setScreenBrightness(currentBrightness); + currentBrightness = -1f + brightenScreenItem.isChecked = false + } + } + companion object { private const val CONTENT_TEXT = "content_text" private const val CONTENT_RAW = "content_raw" diff --git a/app/src/main/res/drawable/ic_action_bright.xml b/app/src/main/res/drawable/ic_action_bright.xml new file mode 100644 index 00000000..8236244e --- /dev/null +++ b/app/src/main/res/drawable/ic_action_bright.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/menu/fragment_barcode.xml b/app/src/main/res/menu/fragment_barcode.xml index 6a5b6144..2e4ca691 100644 --- a/app/src/main/res/menu/fragment_barcode.xml +++ b/app/src/main/res/menu/fragment_barcode.xml @@ -16,4 +16,10 @@ android:title="@string/export_to_file" android:icon="@drawable/ic_action_save" material:showAsAction="ifRoom"/> +