mirror of
https://github.com/karasevm/PrivateDNSAndroid.git
synced 2025-06-28 12:19:57 +00:00
Support for selection of only Private DNS in Option Dialog (#21)
This commit is contained in:
parent
52fc30e96d
commit
d9ad7d2030
5 changed files with 49 additions and 42 deletions
|
@ -11,6 +11,7 @@ import ru.karasevm.privatednstoggle.utils.PreferenceHelper.requireUnlock
|
|||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.AUTO_MODE_OPTION_AUTO
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.AUTO_MODE_OPTION_OFF_AUTO
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.AUTO_MODE_OPTION_PRIVATE
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.DNS_MODE_AUTO
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.DNS_MODE_OFF
|
||||
import ru.karasevm.privatednstoggle.utils.PrivateDNSUtils.DNS_MODE_PRIVATE
|
||||
|
@ -38,6 +39,43 @@ class DnsTileService : TileService() {
|
|||
val sharedPrefs = PreferenceHelper.defaultPreference(this)
|
||||
if (dnsMode.equals(DNS_MODE_OFF, ignoreCase = true)) {
|
||||
if (sharedPrefs.autoMode == AUTO_MODE_OPTION_AUTO || sharedPrefs.autoMode == AUTO_MODE_OPTION_OFF_AUTO) {
|
||||
changeDNSServer(DNS_MODE_AUTO, dnsProvider)
|
||||
} else {
|
||||
changeDNSServer(DNS_MODE_PRIVATE, dnsProvider)
|
||||
}
|
||||
|
||||
} else if (dnsMode == null || dnsMode.equals(DNS_MODE_AUTO, ignoreCase = true)) {
|
||||
changeDNSServer(DNS_MODE_PRIVATE, null)
|
||||
} else if (dnsMode.equals(DNS_MODE_PRIVATE, ignoreCase = true)) {
|
||||
if (getNextAddress(dnsProvider) == null) {
|
||||
if (sharedPrefs.autoMode == AUTO_MODE_OPTION_PRIVATE) {
|
||||
changeDNSServer(DNS_MODE_PRIVATE, null)
|
||||
} else {
|
||||
if (sharedPrefs.autoMode == AUTO_MODE_OPTION_AUTO) {
|
||||
changeDNSServer(DNS_MODE_AUTO,dnsProvider)
|
||||
} else {
|
||||
changeDNSServer(DNS_MODE_OFF, dnsProvider)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
changeDNSServer(DNS_MODE_PRIVATE, dnsProvider)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun changeDNSServer(server: String, dnsProvider: String?) {
|
||||
when (server) {
|
||||
DNS_MODE_OFF -> {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_INACTIVE,
|
||||
getString(R.string.dns_off),
|
||||
R.drawable.ic_off_black_24dp,
|
||||
DNS_MODE_OFF,
|
||||
getNextAddress(dnsProvider)
|
||||
)
|
||||
}
|
||||
DNS_MODE_AUTO -> {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_INACTIVE,
|
||||
|
@ -46,49 +84,8 @@ class DnsTileService : TileService() {
|
|||
DNS_MODE_AUTO,
|
||||
dnsProvider
|
||||
)
|
||||
} else {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_ACTIVE,
|
||||
getNextAddress(dnsProvider),
|
||||
R.drawable.ic_private_black_24dp,
|
||||
DNS_MODE_PRIVATE,
|
||||
getNextAddress(dnsProvider)
|
||||
)
|
||||
}
|
||||
|
||||
} else if (dnsMode == null || dnsMode.equals(DNS_MODE_AUTO, ignoreCase = true)) {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_ACTIVE,
|
||||
getNextAddress(null),
|
||||
R.drawable.ic_private_black_24dp,
|
||||
DNS_MODE_PRIVATE,
|
||||
getNextAddress(null)
|
||||
)
|
||||
} else if (dnsMode.equals(DNS_MODE_PRIVATE, ignoreCase = true)) {
|
||||
if (getNextAddress(dnsProvider) == null) {
|
||||
if (sharedPrefs.autoMode == AUTO_MODE_OPTION_AUTO) {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_INACTIVE,
|
||||
getString(R.string.dns_auto),
|
||||
R.drawable.ic_auto_black_24dp,
|
||||
DNS_MODE_AUTO,
|
||||
dnsProvider
|
||||
)
|
||||
} else {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_INACTIVE,
|
||||
getString(R.string.dns_off),
|
||||
R.drawable.ic_off_black_24dp,
|
||||
DNS_MODE_OFF,
|
||||
getNextAddress(dnsProvider)
|
||||
)
|
||||
}
|
||||
|
||||
} else {
|
||||
DNS_MODE_PRIVATE -> {
|
||||
changeTileState(
|
||||
qsTile,
|
||||
Tile.STATE_ACTIVE,
|
||||
|
|
|
@ -38,6 +38,7 @@ class OptionsDialogFragment : DialogFragment() {
|
|||
PrivateDNSUtils.AUTO_MODE_OPTION_OFF -> binding.autoOptionRadioGroup.check(R.id.autoOptionOff)
|
||||
PrivateDNSUtils.AUTO_MODE_OPTION_AUTO -> binding.autoOptionRadioGroup.check(R.id.autoOptionAuto)
|
||||
PrivateDNSUtils.AUTO_MODE_OPTION_OFF_AUTO -> binding.autoOptionRadioGroup.check(R.id.autoOptionOffAuto)
|
||||
PrivateDNSUtils.AUTO_MODE_OPTION_PRIVATE -> binding.autoOptionRadioGroup.check(R.id.autoOptionPrivate)
|
||||
}
|
||||
binding.autoOptionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
|
||||
when (checkedId) {
|
||||
|
@ -45,6 +46,7 @@ class OptionsDialogFragment : DialogFragment() {
|
|||
R.id.autoOptionAuto -> sharedPrefs.autoMode = PrivateDNSUtils.AUTO_MODE_OPTION_AUTO
|
||||
R.id.autoOptionOffAuto -> sharedPrefs.autoMode =
|
||||
PrivateDNSUtils.AUTO_MODE_OPTION_OFF_AUTO
|
||||
R.id.autoOptionPrivate -> sharedPrefs.autoMode = PrivateDNSUtils.AUTO_MODE_OPTION_PRIVATE
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ object PrivateDNSUtils {
|
|||
const val AUTO_MODE_OPTION_OFF = 0
|
||||
const val AUTO_MODE_OPTION_AUTO = 1
|
||||
const val AUTO_MODE_OPTION_OFF_AUTO = 2
|
||||
const val AUTO_MODE_OPTION_PRIVATE = 3
|
||||
|
||||
private const val PRIVATE_DNS_MODE = "private_dns_mode"
|
||||
private const val PRIVATE_DNS_PROVIDER = "private_dns_specifier"
|
||||
|
|
|
@ -38,6 +38,12 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:text="@string/auto_option_off_and_auto" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/autoOptionPrivate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/auto_option_only_private" />
|
||||
|
||||
|
||||
</RadioGroup>
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
<string name="auto_option_only_off">Only off</string>
|
||||
<string name="auto_option_only_auto">Only auto</string>
|
||||
<string name="auto_option_off_and_auto">Off and auto</string>
|
||||
<string name="auto_option_only_private">Only Private DNS</string>
|
||||
<string name="open_app">Open app</string>
|
||||
<string name="set_to_off_toast">Private DNS turned off</string>
|
||||
<string name="set_to_auto_toast">Private DNS set to auto</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue