mirror of https://github.com/YTVanced/VancedMicroG
104 lines
5.0 KiB
Kotlin
104 lines
5.0 KiB
Kotlin
/*
|
|
* SPDX-FileCopyrightText: 2020, microG Project Team
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
package org.microg.gms.ui
|
|
|
|
import android.os.Bundle
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.preference.ListPreference
|
|
import androidx.preference.Preference
|
|
import androidx.preference.PreferenceFragmentCompat
|
|
import androidx.preference.TwoStatePreference
|
|
import com.mgoogle.android.gms.R
|
|
import org.microg.gms.gcm.*
|
|
|
|
class PushNotificationAdvancedFragment : PreferenceFragmentCompat() {
|
|
private lateinit var networkMobile: ListPreference
|
|
private lateinit var networkWifi: ListPreference
|
|
private lateinit var networkRoaming: ListPreference
|
|
private lateinit var networkOther: ListPreference
|
|
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
addPreferencesFromResource(R.xml.preferences_gcm_advanced)
|
|
}
|
|
|
|
override fun onBindPreferences() {
|
|
networkMobile = preferenceScreen.findPreference(GcmPrefs.PREF_NETWORK_MOBILE) ?: networkMobile
|
|
networkWifi = preferenceScreen.findPreference(GcmPrefs.PREF_NETWORK_WIFI) ?: networkWifi
|
|
networkRoaming = preferenceScreen.findPreference(GcmPrefs.PREF_NETWORK_ROAMING) ?: networkRoaming
|
|
networkOther = preferenceScreen.findPreference(GcmPrefs.PREF_NETWORK_OTHER) ?: networkOther
|
|
|
|
networkMobile.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
|
|
lifecycleScope.launchWhenResumed {
|
|
(newValue as? String)?.toIntOrNull()?.let {
|
|
setGcmServiceConfiguration(requireContext(), getGcmServiceInfo(requireContext()).configuration.copy(mobile = it))
|
|
}
|
|
updateContent()
|
|
}
|
|
true
|
|
}
|
|
networkWifi.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
|
|
lifecycleScope.launchWhenResumed {
|
|
(newValue as? String)?.toIntOrNull()?.let {
|
|
setGcmServiceConfiguration(requireContext(), getGcmServiceInfo(requireContext()).configuration.copy(wifi = it))
|
|
}
|
|
updateContent()
|
|
}
|
|
true
|
|
}
|
|
networkRoaming.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
|
|
lifecycleScope.launchWhenResumed {
|
|
(newValue as? String)?.toIntOrNull()?.let {
|
|
setGcmServiceConfiguration(requireContext(), getGcmServiceInfo(requireContext()).configuration.copy(roaming = it))
|
|
}
|
|
updateContent()
|
|
}
|
|
true
|
|
}
|
|
networkOther.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
|
|
lifecycleScope.launchWhenResumed {
|
|
(newValue as? String)?.toIntOrNull()?.let {
|
|
setGcmServiceConfiguration(requireContext(), getGcmServiceInfo(requireContext()).configuration.copy(other = it))
|
|
}
|
|
updateContent()
|
|
}
|
|
true
|
|
}
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
updateContent()
|
|
}
|
|
|
|
private fun updateContent() {
|
|
lifecycleScope.launchWhenResumed {
|
|
val serviceInfo = getGcmServiceInfo(requireContext())
|
|
networkMobile.value = serviceInfo.configuration.mobile.toString()
|
|
networkMobile.summary = getSummaryString(serviceInfo.configuration.mobile, serviceInfo.learntMobileInterval)
|
|
networkWifi.value = serviceInfo.configuration.wifi.toString()
|
|
networkWifi.summary = getSummaryString(serviceInfo.configuration.wifi, serviceInfo.learntWifiInterval)
|
|
networkRoaming.value = serviceInfo.configuration.roaming.toString()
|
|
networkRoaming.summary = getSummaryString(serviceInfo.configuration.roaming, serviceInfo.learntMobileInterval)
|
|
networkOther.value = serviceInfo.configuration.other.toString()
|
|
networkOther.summary = getSummaryString(serviceInfo.configuration.other, serviceInfo.learntOtherInterval)
|
|
}
|
|
}
|
|
|
|
private fun getSummaryString(value: Int, learnt: Int): String = when (value) {
|
|
-1 -> getString(R.string.service_status_disabled_short)
|
|
0 -> getString(R.string.service_status_enabled_short) + " / " + getString(R.string.gcm_status_pref_default) + ": " + getHeartbeatString(learnt)
|
|
else -> getString(R.string.service_status_enabled_short) + " / " + getString(R.string.gcm_status_pref_manual) + ": " + getHeartbeatString(value * GcmPrefs.INTERVAL)
|
|
}
|
|
|
|
private fun getHeartbeatString(heartbeatMs: Int): String {
|
|
return if (heartbeatMs < 120000) {
|
|
(heartbeatMs / 1000).toString() + " " + getString(R.string.gcm_status_pref_sec)
|
|
} else (heartbeatMs / GcmPrefs.INTERVAL).toString() + " " + getString(R.string.gcm_status_pref_min)
|
|
}
|
|
|
|
companion object {
|
|
private val HEARTBEAT_PREFS = arrayOf(GcmPrefs.PREF_NETWORK_MOBILE, GcmPrefs.PREF_NETWORK_ROAMING, GcmPrefs.PREF_NETWORK_WIFI, GcmPrefs.PREF_NETWORK_OTHER)
|
|
}
|
|
} |