From 14afab37a51cf993875db87f07e824d8f84f33e9 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 20 Sep 2023 00:03:25 +0800 Subject: [PATCH] Add text detect --- .../tv/ui/custom/dialog/ConfigDialog.java | 23 ++++++++++++++++ .../tv/ui/custom/dialog/ProxyDialog.java | 4 +-- .../android/tv/ui/custom/dialog/UaDialog.java | 26 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java index fa3643335..30f7615ce 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java @@ -16,6 +16,7 @@ import com.fongmi.android.tv.api.WallConfig; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.databinding.DialogConfigBinding; import com.fongmi.android.tv.impl.ConfigCallback; +import com.fongmi.android.tv.ui.custom.CustomTextListener; import com.fongmi.android.tv.utils.FileChooser; import com.fongmi.android.tv.utils.Utils; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -26,6 +27,7 @@ public class ConfigDialog { private final ConfigCallback callback; private final Fragment fragment; private AlertDialog dialog; + private boolean append; private String url; private int type; @@ -42,6 +44,7 @@ public class ConfigDialog { this.fragment = fragment; this.callback = (ConfigCallback) fragment; this.binding = DialogConfigBinding.inflate(LayoutInflater.from(fragment.getContext())); + this.append = true; } public void show() { @@ -63,6 +66,12 @@ public class ConfigDialog { } private void initEvent() { + binding.text.addTextChangedListener(new CustomTextListener() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + detect(s.toString()); + } + }); binding.text.setOnEditorActionListener((textView, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE) dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); return true; @@ -87,6 +96,20 @@ public class ConfigDialog { dialog.dismiss(); } + private void detect(String s) { + if (append && s.equalsIgnoreCase("h")) { + append = false; + binding.text.append("ttp://"); + } else if (append && s.equalsIgnoreCase("f")) { + append = false; + binding.text.append("ile://"); + } else if (s.length() > 1) { + append = false; + } else if (s.length() == 0) { + append = true; + } + } + private void onPositive(DialogInterface dialog, int which) { String text = Utils.checkClan(binding.text.getText().toString().trim()); if (text.isEmpty()) Config.delete(url, type); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ProxyDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ProxyDialog.java index 4daa1cbac..526d781af 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ProxyDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ProxyDialog.java @@ -64,10 +64,10 @@ public class ProxyDialog { } private void detect(String s) { - if (append && s.equals("h")) { + if (append && s.equalsIgnoreCase("h")) { append = false; binding.text.append("ttp://"); - } else if (append && s.equals("s")) { + } else if (append && s.equalsIgnoreCase("s")) { append = false; binding.text.append("ocks5://"); } else if (append && s.length() == 1) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/UaDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/UaDialog.java index 6285057d4..5668814d8 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/UaDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/UaDialog.java @@ -12,13 +12,18 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.databinding.DialogUaBinding; import com.fongmi.android.tv.impl.UaCallback; +import com.fongmi.android.tv.ui.custom.CustomTextListener; +import com.fongmi.android.tv.utils.Sniffer; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import okhttp3.internal.Util; + public class UaDialog { private final DialogUaBinding binding; private final UaCallback callback; private AlertDialog dialog; + private boolean append; public static UaDialog create(Fragment fragment) { return new UaDialog(fragment); @@ -27,6 +32,7 @@ public class UaDialog { public UaDialog(Fragment fragment) { this.callback = (UaCallback) fragment; this.binding = DialogUaBinding.inflate(LayoutInflater.from(fragment.getContext())); + this.append = true; } public void show() { @@ -48,12 +54,32 @@ public class UaDialog { } private void initEvent() { + binding.text.addTextChangedListener(new CustomTextListener() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + detect(s.toString()); + } + }); binding.text.setOnEditorActionListener((textView, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE) dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); return true; }); } + private void detect(String s) { + if (append && s.equalsIgnoreCase("c")) { + append = false; + binding.text.setText(Sniffer.CHROME); + } else if (append && s.equalsIgnoreCase("o")) { + append = false; + binding.text.setText(Util.userAgent); + } else if (s.length() > 1) { + append = false; + } else if (s.length() == 0) { + append = true; + } + } + private void onPositive(DialogInterface dialog, int which) { callback.setUa(binding.text.getText().toString().trim()); dialog.dismiss();