From f271ba3d97cdf4af8cafa6b7d178cad1b6afc46b Mon Sep 17 00:00:00 2001
From: kr328 <kr328app@outlook.com>
Date: Sun, 12 Sep 2021 17:38:52 +0800
Subject: [PATCH] Feature: add dns.geoip-code support

---
 .../kr328/clash/core/model/ConfigurationOverride.kt      | 3 +++
 .../github/kr328/clash/design/OverrideSettingsDesign.kt  | 9 +++++++++
 design/src/main/res/values-zh/strings.xml                | 1 +
 design/src/main/res/values/strings.xml                   | 2 ++
 4 files changed, 15 insertions(+)

diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
index 8d384067..43a4ab23 100644
--- a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
+++ b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
@@ -91,6 +91,9 @@ data class ConfigurationOverride(
         @SerialName("geoip")
         var geoIp: Boolean? = null,
 
+        @SerialName("geoip-code")
+        var geoIpCode: String? = null,
+
         @SerialName("ipcidr")
         var ipcidr: List<String>? = null,
 
diff --git a/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt b/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
index 118744c5..ba91d6b4 100644
--- a/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
+++ b/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
@@ -383,6 +383,15 @@ class OverrideSettingsDesign(
                 configure = dnsDependencies::add,
             )
 
+            editableText(
+                value = configuration.dns.fallbackFilter::geoIpCode,
+                adapter = NullableTextAdapter.String,
+                title = R.string.geoip_fallback_code,
+                placeholder = R.string.dont_modify,
+                empty = R.string.raw_cn,
+                configure = dnsDependencies::add,
+            )
+
             editableTextList(
                 value = configuration.dns.fallbackFilter::domain,
                 adapter = TextAdapter.String,
diff --git a/design/src/main/res/values-zh/strings.xml b/design/src/main/res/values-zh/strings.xml
index 46c370fb..99ba7785 100644
--- a/design/src/main/res/values-zh/strings.xml
+++ b/design/src/main/res/values-zh/strings.xml
@@ -213,4 +213,5 @@
     <string name="name_server_policy">Name Server 策略</string>
     <string name="block_loopback">阻止本地回环</string>
     <string name="block_loopback_summary">阻止本地回环连接</string>
+    <string name="geoip_fallback_code">GeoIP Fallback 区域代码</string>
 </resources>
\ No newline at end of file
diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml
index 097edfc0..6d3e20dd 100644
--- a/design/src/main/res/values/strings.xml
+++ b/design/src/main/res/values/strings.xml
@@ -74,6 +74,7 @@
     <string name="exit_without_save">Exit without Save</string>
     <string name="exit_without_save_warning">All changed will *LOST*</string>
 
+    <string name="raw_cn" translatable="false">cn</string>
     <string name="disabled">Disabled</string>
     <string name="unavailable">Unavailable</string>
     <string name="empty_name">Empty Name</string>
@@ -159,6 +160,7 @@
     <string name="default_name_server">Default Name Server</string>
     <string name="fakeip_filter">Fake-IP Filter</string>
     <string name="geoip_fallback">GeoIP Fallback</string>
+    <string name="geoip_fallback_code">GeoIP Fallback Code</string>
     <string name="ipcidr_fallback">IPCIDR Fallback</string>
     <string name="domain_fallback">Domain Fallback</string>
     <string name="name_server_policy">Name Server Policy</string>