summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/AndroidManifest.xml4
-rw-r--r--app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt53
-rw-r--r--app/src/main/java/com/draco/buoy/models/BatterySaverConstantsConfig.kt4
-rw-r--r--app/src/main/java/com/draco/buoy/receivers/ExternalProfileReceiver.kt35
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverConstants.kt (renamed from app/src/main/java/com/draco/buoy/repositories/BatterySaverConstants.kt)2
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverSecureSettings.kt (renamed from app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt)2
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt6
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/constants/PowerManagerLocationModes.kt (renamed from app/src/main/java/com/draco/buoy/repositories/PowerManagerLocationModes.kt)2
-rw-r--r--app/src/main/java/com/draco/buoy/repositories/profiles/BatterySaverConstantsConfigProfiles.kt (renamed from app/src/main/java/com/draco/buoy/repositories/BatterySaverConstantsConfigProfiles.kt)3
-rw-r--r--app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt26
10 files changed, 103 insertions, 34 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1f0e401..b72fa01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,6 +25,10 @@
<activity android:name=".views.PermissionActivity"
android:label="@string/title_permission"/>
+
+ <receiver android:name=".receivers.ExternalProfileReceiver"
+ android:exported="true"
+ tools:ignore="ExportedReceiver" />
</application>
</manifest> \ No newline at end of file
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 778f144..0a0f923 100644
--- a/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt
+++ b/app/src/main/java/com/draco/buoy/fragments/MainPreferenceFragment.kt
@@ -8,7 +8,7 @@ import android.os.Bundle
import androidx.preference.*
import com.draco.buoy.R
import com.draco.buoy.models.BatterySaverConstantsConfig
-import com.draco.buoy.repositories.BatterySaverConstantsConfigProfiles
+import com.draco.buoy.repositories.profiles.BatterySaverConstantsConfigProfiles
import com.draco.buoy.utils.BatterySaverManager
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
import com.google.android.material.snackbar.Snackbar
@@ -37,12 +37,12 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
- loadSettings()
+ refreshSettings()
findPreference<EditTextPreference>(getString(R.string.pref_key_import))?.let {
it.setOnPreferenceChangeListener { _, newValue ->
batterySaverManager.setConstantsString(newValue as String)
- loadSettings()
+ refreshSettings()
return@setOnPreferenceChangeListener true
}
}
@@ -50,11 +50,26 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
- getString(R.string.pref_profile_key_reset) -> resetProfile()
- getString(R.string.pref_profile_key_light) -> applyProfile(BatterySaverConstantsConfigProfiles.LIGHT)
- getString(R.string.pref_profile_key_moderate) -> applyProfile(BatterySaverConstantsConfigProfiles.MODERATE)
- getString(R.string.pref_profile_key_high) -> applyProfile(BatterySaverConstantsConfigProfiles.HIGH)
- getString(R.string.pref_profile_key_extreme) -> applyProfile(BatterySaverConstantsConfigProfiles.EXTREME)
+ getString(R.string.pref_profile_key_reset) -> {
+ batterySaverManager.reset()
+ refreshSettings()
+ }
+ getString(R.string.pref_profile_key_light) -> {
+ batterySaverManager.apply(BatterySaverConstantsConfigProfiles.LIGHT)
+ refreshSettings()
+ }
+ getString(R.string.pref_profile_key_moderate) -> {
+ batterySaverManager.apply(BatterySaverConstantsConfigProfiles.MODERATE)
+ refreshSettings()
+ }
+ getString(R.string.pref_profile_key_high) -> {
+ batterySaverManager.apply(BatterySaverConstantsConfigProfiles.HIGH)
+ refreshSettings()
+ }
+ getString(R.string.pref_profile_key_extreme) -> {
+ batterySaverManager.apply(BatterySaverConstantsConfigProfiles.EXTREME)
+ refreshSettings()
+ }
getString(R.string.pref_key_export) -> exportSettings()
getString(R.string.pref_key_import) -> (preference as EditTextPreference).text = batterySaverManager.getConstantsString()
@@ -80,7 +95,7 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS
startActivity(chooser)
}
- private fun loadSettings() {
+ private fun refreshSettings() {
val currentProfileString = batterySaverManager.getConstantsString()
val currentProfile = BatterySaverConstantsConfig().also {
if (currentProfileString != null)
@@ -128,24 +143,8 @@ class MainPreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnS
!findPreference<SwitchPreference>(getString(R.string.pref_config_key_aod_enabled))!!.isChecked,
findPreference<SwitchPreference>(getString(R.string.pref_config_key_quick_doze_enabled))!!.isChecked
)
- batterySaverManager.setConstantsConfig(config)
- applyProfile(config)
- }
-
- private fun applyProfile(profile: BatterySaverConstantsConfig) {
- batterySaverManager.setConstantsConfig(profile)
- batterySaverManager.setLowPower(true)
- batterySaverManager.setLowPowerSticky(true)
- batterySaverManager.setLowPowerStickyAutoDisableEnabled(false)
- loadSettings()
- }
-
- private fun resetProfile() {
- batterySaverManager.resetConstants()
- batterySaverManager.setLowPower(false)
- batterySaverManager.setLowPowerSticky(false)
- batterySaverManager.setLowPowerStickyAutoDisableEnabled(true)
- loadSettings()
+ batterySaverManager.apply(config)
+ refreshSettings()
}
private fun openURL(url: String) {
diff --git a/app/src/main/java/com/draco/buoy/models/BatterySaverConstantsConfig.kt b/app/src/main/java/com/draco/buoy/models/BatterySaverConstantsConfig.kt
index c26ab01..83ec46b 100644
--- a/app/src/main/java/com/draco/buoy/models/BatterySaverConstantsConfig.kt
+++ b/app/src/main/java/com/draco/buoy/models/BatterySaverConstantsConfig.kt
@@ -1,7 +1,7 @@
package com.draco.buoy.models
-import com.draco.buoy.repositories.BatterySaverConstants
-import com.draco.buoy.repositories.PowerManagerLocationModes
+import com.draco.buoy.repositories.constants.BatterySaverConstants
+import com.draco.buoy.repositories.constants.PowerManagerLocationModes
data class BatterySaverConstantsConfig(
var advertiseIsEnabled: Boolean = true,
diff --git a/app/src/main/java/com/draco/buoy/receivers/ExternalProfileReceiver.kt b/app/src/main/java/com/draco/buoy/receivers/ExternalProfileReceiver.kt
new file mode 100644
index 0000000..c93e563
--- /dev/null
+++ b/app/src/main/java/com/draco/buoy/receivers/ExternalProfileReceiver.kt
@@ -0,0 +1,35 @@
+package com.draco.buoy.receivers
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.draco.buoy.R
+import com.draco.buoy.repositories.constants.ExternalProfileReceiverIntentConstants
+import com.draco.buoy.repositories.profiles.BatterySaverConstantsConfigProfiles
+import com.draco.buoy.utils.BatterySaverManager
+
+class ExternalProfileReceiver : BroadcastReceiver() {
+ private lateinit var batterySaverManager: BatterySaverManager
+
+ override fun onReceive(context: Context, intent: Intent) {
+ batterySaverManager = BatterySaverManager(context.contentResolver)
+
+ val profileName = intent.getStringExtra(ExternalProfileReceiverIntentConstants.KEY_PROFILE_NAME)
+ val constants = intent.getStringExtra(ExternalProfileReceiverIntentConstants.KEY_CONSTANTS)
+
+ profileName?.let {
+ when (it) {
+ context.getString(R.string.pref_profile_key_light) -> batterySaverManager.apply(BatterySaverConstantsConfigProfiles.LIGHT)
+ context.getString(R.string.pref_profile_key_moderate) -> batterySaverManager.apply(BatterySaverConstantsConfigProfiles.MODERATE)
+ context.getString(R.string.pref_profile_key_high) -> batterySaverManager.apply(BatterySaverConstantsConfigProfiles.HIGH)
+ context.getString(R.string.pref_profile_key_extreme) -> batterySaverManager.apply(BatterySaverConstantsConfigProfiles.EXTREME)
+ }
+ }
+
+ constants?.let {
+ batterySaverManager.apply(it)
+ }
+
+ resultData = batterySaverManager.getConstantsString()
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/com/draco/buoy/repositories/BatterySaverConstants.kt b/app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverConstants.kt
index f8ca29c..33d0b3d 100644
--- a/app/src/main/java/com/draco/buoy/repositories/BatterySaverConstants.kt
+++ b/app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverConstants.kt
@@ -1,4 +1,4 @@
-package com.draco.buoy.repositories
+package com.draco.buoy.repositories.constants
object BatterySaverConstants {
const val ADVERTISE_IS_ENABLED = "advertise_is_enabled"
diff --git a/app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt b/app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverSecureSettings.kt
index e381081..72573a2 100644
--- a/app/src/main/java/com/draco/buoy/repositories/BatterySaverSecureSettings.kt
+++ b/app/src/main/java/com/draco/buoy/repositories/constants/BatterySaverSecureSettings.kt
@@ -1,4 +1,4 @@
-package com.draco.buoy.repositories
+package com.draco.buoy.repositories.constants
/**
* Expose secure settings hidden in the Android APIs
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
new file mode 100644
index 0000000..6de06cc
--- /dev/null
+++ b/app/src/main/java/com/draco/buoy/repositories/constants/ExternalProfileReceiverIntentConstants.kt
@@ -0,0 +1,6 @@
+package com.draco.buoy.repositories.constants
+
+object ExternalProfileReceiverIntentConstants {
+ const val KEY_PROFILE_NAME = "profile_name"
+ const val KEY_CONSTANTS = "constants"
+} \ No newline at end of file
diff --git a/app/src/main/java/com/draco/buoy/repositories/PowerManagerLocationModes.kt b/app/src/main/java/com/draco/buoy/repositories/constants/PowerManagerLocationModes.kt
index 98b5b03..35e5713 100644
--- a/app/src/main/java/com/draco/buoy/repositories/PowerManagerLocationModes.kt
+++ b/app/src/main/java/com/draco/buoy/repositories/constants/PowerManagerLocationModes.kt
@@ -1,4 +1,4 @@
-package com.draco.buoy.repositories
+package com.draco.buoy.repositories.constants
import android.os.PowerManager
diff --git a/app/src/main/java/com/draco/buoy/repositories/BatterySaverConstantsConfigProfiles.kt b/app/src/main/java/com/draco/buoy/repositories/profiles/BatterySaverConstantsConfigProfiles.kt
index 75a5228..bae82b8 100644
--- a/app/src/main/java/com/draco/buoy/repositories/BatterySaverConstantsConfigProfiles.kt
+++ b/app/src/main/java/com/draco/buoy/repositories/profiles/BatterySaverConstantsConfigProfiles.kt
@@ -1,6 +1,7 @@
-package com.draco.buoy.repositories
+package com.draco.buoy.repositories.profiles
import com.draco.buoy.models.BatterySaverConstantsConfig
+import com.draco.buoy.repositories.constants.PowerManagerLocationModes
object BatterySaverConstantsConfigProfiles {
/**
diff --git a/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt b/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt
index f63b681..d9ba9be 100644
--- a/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt
+++ b/app/src/main/java/com/draco/buoy/utils/BatterySaverManager.kt
@@ -3,7 +3,7 @@ package com.draco.buoy.utils
import android.content.ContentResolver
import android.provider.Settings
import com.draco.buoy.models.BatterySaverConstantsConfig
-import com.draco.buoy.repositories.BatterySaverSecureSettings
+import com.draco.buoy.repositories.constants.BatterySaverSecureSettings
class BatterySaverManager(private val contentResolver: ContentResolver) {
/**
@@ -80,4 +80,28 @@ class BatterySaverManager(private val contentResolver: ContentResolver) {
fun setConstantsConfig(config: BatterySaverConstantsConfig) {
setConstantsString(config.toString())
}
+
+ /**
+ * Quick way to apply either type of config
+ */
+ fun apply(config: Any) {
+ when (config) {
+ is String -> setConstantsString(config)
+ is BatterySaverConstantsConfig -> setConstantsConfig(config)
+ }
+
+ setLowPower(true)
+ setLowPowerSticky(true)
+ setLowPowerStickyAutoDisableEnabled(false)
+ }
+
+ /**
+ * Quick way to reset everything
+ */
+ fun reset() {
+ resetConstants()
+ setLowPower(false)
+ setLowPowerSticky(false)
+ setLowPowerStickyAutoDisableEnabled(true)
+ }
} \ No newline at end of file