diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/TextInputModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/TextInputModule.java
index b38dba0..328c9dd 100644
--- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/TextInputModule.java
+++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/TextInputModule.java
@@ -20,8 +20,8 @@ import com.trianguloy.urlchecker.dialogs.MainDialog;
import com.trianguloy.urlchecker.modules.AModuleConfig;
import com.trianguloy.urlchecker.modules.AModuleData;
import com.trianguloy.urlchecker.modules.AModuleDialog;
-import com.trianguloy.urlchecker.modules.DescriptionConfig;
import com.trianguloy.urlchecker.url.UrlData;
+import com.trianguloy.urlchecker.utilities.generics.GenericPref;
import com.trianguloy.urlchecker.utilities.methods.AndroidUtils;
import com.trianguloy.urlchecker.utilities.wrappers.DefaultTextWatcher;
import com.trianguloy.urlchecker.utilities.wrappers.DoubleEvent;
@@ -29,6 +29,10 @@ import com.trianguloy.urlchecker.utilities.wrappers.DoubleEvent;
/** This module shows the current url and allows manual editing */
public class TextInputModule extends AModuleData {
+ public static GenericPref.Bool ALWAYSEDIT_PREF(Context cntx) {
+ return new GenericPref.Bool("text_alwaysEdit", false, cntx);
+ }
+
@Override
public String getId() {
return "text";
@@ -46,7 +50,24 @@ public class TextInputModule extends AModuleData {
@Override
public AModuleConfig getConfig(ModulesActivity cntx) {
- return new DescriptionConfig(R.string.mInput_desc);
+ return new TextInputConfig(cntx);
+ }
+}
+
+class TextInputConfig extends AModuleConfig {
+
+ public TextInputConfig(ModulesActivity cntx) {
+ super(cntx);
+ }
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.config_input;
+ }
+
+ @Override
+ public void onInitialize(View views) {
+ TextInputModule.ALWAYSEDIT_PREF(getActivity()).attachToSwitch(views.findViewById(R.id.alwaysEdit));
}
}
@@ -54,6 +75,7 @@ class TextInputDialog extends AModuleDialog {
private final DoubleEvent doubleEdit = new DoubleEvent(1000); // if two updates happens in less than this milliseconds, they are considered as the same
private final InputMethodManager inputMethodManager;
+ private final GenericPref.Bool alwaysEdit;
private boolean skipUpdate = false;
private TextView txt_url;
@@ -62,6 +84,7 @@ class TextInputDialog extends AModuleDialog {
public TextInputDialog(MainDialog dialog) {
super(dialog);
inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+ alwaysEdit = TextInputModule.ALWAYSEDIT_PREF(dialog);
}
@Override
@@ -92,27 +115,40 @@ class TextInputDialog extends AModuleDialog {
});
- AndroidUtils.setOnClickWithPositionListener(txt_url, position -> {
- edtxt_url.setSelection(txt_url.getOffsetForPosition(position.first, position.second));
+ if (alwaysEdit.get()) {
+ // always editable
txt_url.setVisibility(View.GONE);
edtxt_url.setVisibility(View.VISIBLE);
- // force open the keyboard
- edtxt_url.requestFocus();
- inputMethodManager.showSoftInput(edtxt_url, 0);
- });
- }
+ } else {
+ // editable when clicked
+ AndroidUtils.setOnClickWithPositionListener(txt_url, position -> {
+ edtxt_url.setSelection(txt_url.getOffsetForPosition(position.first, position.second));
+ txt_url.setVisibility(View.GONE);
+ edtxt_url.setVisibility(View.VISIBLE);
+ // force open the keyboard
+ edtxt_url.requestFocus();
+ inputMethodManager.showSoftInput(edtxt_url, 0);
+ });
+ }
+ }
@Override
public void onDisplayUrl(UrlData urlData) {
// setText fires the afterTextChanged listener, so we need to skip it
skipUpdate = true;
- txt_url.setText(getSpannableUriText(urlData.url));
+
edtxt_url.setText(urlData.url);
- txt_url.setVisibility(View.VISIBLE);
- edtxt_url.setVisibility(View.GONE);
- // force close the keyboard
- inputMethodManager.hideSoftInputFromWindow(edtxt_url.getWindowToken(), 0);
+ if (!alwaysEdit.get()) {
+ // back to non-edit
+ txt_url.setText(getSpannableUriText(urlData.url));
+ txt_url.setVisibility(View.VISIBLE);
+ edtxt_url.setVisibility(View.GONE);
+
+ // force close the keyboard
+ inputMethodManager.hideSoftInputFromWindow(edtxt_url.getWindowToken(), 0);
+ }
+
skipUpdate = false;
doubleEdit.reset(); // next user update, even if immediately after, will be considered new
}
diff --git a/app/src/main/res/layout/config_input.xml b/app/src/main/res/layout/config_input.xml
new file mode 100644
index 0000000..ac8200f
--- /dev/null
+++ b/app/src/main/res/layout/config_input.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index e8d55d7..95c573d 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -187,7 +187,8 @@ Hay algunos enlaces cuyo único propósito es redirigirte a otro enlace. Si el e
Verifica automáticamente las URL que coincidan con el siguiente patrón de expresiones regulares. ¡Advertencia! Se recomienda especificar un patrón restrictivo (y no .* para todos), de lo contrario, los servidores maliciosos pueden registrar tu IP.
Texto de entrada
- Muestra la URL actual, que puede ser modificada manualmente.
+ Muestra la URL actual. Pulsa para editarla.
+ Mantener activo el modo edición
Escáneador de la URL
Cuando este módulo se habilita puedes escanear la URL mediante VirusTotal y comprobar el informe. Se necesita una clave de la API de VirusTotal para que funcione, puedes obtener una tras registrarte gratis aquí: https://www.virustotal.com/gui/join-us .
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ea0932f..58855ab 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -237,7 +237,9 @@ Note: if you edit the patterns, new built-in patterns from app updates will not
Automatically check URLs that match the following regex pattern. Warning! It is advised to specify a restrictive pattern (and not .* for all) otherwise malicious servers may log your IP.
Input text
- Displays the current URL, which can be edited manually.
+ Displays the current URL. Press it to enter edit mode.
+ Keep always in edit mode
+
URL Scanner
When this module is enabled you can scan the URL using VirusTotal and check the report. A personal VirusTotal API key is needed for it to work, you can get one after registering for a free account here: https://www.virustotal.com/gui/join-us .
API key