diff options
5 files changed, 34 insertions, 2 deletions
diff --git a/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt b/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt index 0a0f923..f030c16 100644 --- a/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt +++ b/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt @@ -39,6 +39,9 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS super.onActivityCreated(savedInstanceState) refreshSettings() + /** + * On import text changed, apply the new configuration + */ findPreference<EditTextPreference>(getString(R.string.pref_key_import))?.let { it.setOnPreferenceChangeListener { _, newValue -> batterySaverManager.setConstantsString(newValue as String) @@ -86,6 +89,9 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS return true } + /** + * Show the user a dialog where they can export the constants + */ private fun exportSettings() { val intent = Intent() .setAction(Intent.ACTION_SEND) @@ -95,7 +101,11 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS startActivity(chooser) } + /** + * Update the UI to show the new constants + */ private fun refreshSettings() { + /* Take existing constants and apply to the default config as overrides */ val currentProfileString = batterySaverManager.getConstantsString() val currentProfile = BatterySaverConstantsConfig().also { if (currentProfileString != null) @@ -122,7 +132,10 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS findPreference<SwitchPreference>(getString(R.string.pref_config_key_quick_doze_enabled))?.isChecked = currentProfile.quickDozeEnabled } - private fun saveSettings() { + /** + * Take the UI settings and apply them as constants + */ + private fun applySettings() { val config = BatterySaverConstantsConfig( findPreference<SwitchPreference>(getString(R.string.pref_config_key_advertise_is_enabled))!!.isChecked, !findPreference<SwitchPreference>(getString(R.string.pref_config_key_datasaver_enabled))!!.isChecked, @@ -147,6 +160,9 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS refreshSettings() } + /** + * Open a URL for the user + */ private fun openURL(url: String) { val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) try { @@ -157,7 +173,10 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS } } + /** + * When settings are changed, apply the new config + */ override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { - saveSettings() + applySettings() } }
\ No newline at end of file diff --git a/app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt b/app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt index 6de06cc..60e2f1b 100644 --- a/app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt +++ b/app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt @@ -1,6 +1,13 @@ package com.draco.buoy.repositories.constants object ExternalProfileReceiverIntentConstants { + /** + * Intent key, can specify one of the available profiles + */ const val KEY_PROFILE_NAME = "profile_name" + + /** + * Intent key, can specify a string delimited by ',' with key=value pairs + */ const val KEY_CONSTANTS = "constants" }
\ No newline at end of file diff --git a/app/src/main/java/com/draco/buoy/utils/PermissionUtils.kt b/app/src/main/java/com/draco/buoy/utils/PermissionUtils.kt index 13dc385..d7d270a 100644 --- a/app/src/main/java/com/draco/buoy/utils/PermissionUtils.kt +++ b/app/src/main/java/com/draco/buoy/utils/PermissionUtils.kt @@ -5,6 +5,9 @@ import android.content.pm.PackageManager class PermissionUtils { companion object { + /** + * Return true if the permission is granted, false otherwise + */ fun isPermissionsGranted(context: Context, permission: String): Boolean = context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED } diff --git a/app/src/main/java/com/draco/buoy/views/MainActivity.kt b/app/src/main/java/com/draco/buoy/views/MainActivity.kt index 4d86dad..30f90a5 100644 --- a/app/src/main/java/com/draco/buoy/views/MainActivity.kt +++ b/app/src/main/java/com/draco/buoy/views/MainActivity.kt @@ -17,6 +17,7 @@ class MainActivity : AppCompatActivity() { preferences = findViewById(R.id.preferences) + /* If we are missing a permission, lock the user in the permission activity */ if (!PermissionUtils.isPermissionsGranted(this, android.Manifest.permission.WRITE_SECURE_SETTINGS)) goToPermissionActivity() diff --git a/app/src/main/java/com/draco/buoy/views/PermissionActivity.kt b/app/src/main/java/com/draco/buoy/views/PermissionActivity.kt index d3b8b62..27435e7 100644 --- a/app/src/main/java/com/draco/buoy/views/PermissionActivity.kt +++ b/app/src/main/java/com/draco/buoy/views/PermissionActivity.kt @@ -22,6 +22,7 @@ class PermissionActivity : AppCompatActivity() { command = findViewById(R.id.command) + /* Copy ADB command to clipboard */ command.setOnClickListener { val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("ADB Command", command.text.toString()) @@ -30,6 +31,7 @@ class PermissionActivity : AppCompatActivity() { Snackbar.make(command, R.string.copied, Snackbar.LENGTH_SHORT).show() } + /* Once permission is granted, return */ viewModel.permissionGranted.observe(this) { if (it == true) finish() |