From 1a8b899fcff9f2e6b2e55ba9bdeb79c0878ca289 Mon Sep 17 00:00:00 2001 From: TrianguloY Date: Tue, 7 Mar 2023 20:26:52 +0100 Subject: [PATCH] rearrange code move DrawableButtonUtils.setEnabled to AndroidUtils.setEnabled move UnaryOperator inside JavaUtils make loadMod and storeMod parameters to attachToEditText simplify globaldata management --- .../urlchecker/dialogs/MainDialog.java | 18 +++-- .../urlchecker/modules/AModuleDialog.java | 23 +++++++ .../modules/companions/GlobalData.java | 28 -------- .../urlchecker/modules/list/DebugModule.java | 5 +- .../urlchecker/modules/list/FlagsModule.java | 65 +++++++++---------- .../modules/list/HistoryModule.java | 10 +-- .../urlchecker/modules/list/OpenModule.java | 16 ++--- .../urlchecker/utilities/AndroidUtils.java | 9 +++ .../utilities/DrawableButtonUtils.java | 17 ----- .../urlchecker/utilities/GenericPref.java | 30 +++------ .../utilities/GlobalDataContainer.java | 7 -- .../urlchecker/utilities/JavaUtils.java | 6 ++ .../urlchecker/utilities/UnaryOperator.java | 5 -- app/src/main/res/values/strings.xml | 2 +- 14 files changed, 99 insertions(+), 142 deletions(-) delete mode 100644 app/src/main/java/com/trianguloy/urlchecker/modules/companions/GlobalData.java delete mode 100644 app/src/main/java/com/trianguloy/urlchecker/utilities/DrawableButtonUtils.java delete mode 100644 app/src/main/java/com/trianguloy/urlchecker/utilities/GlobalDataContainer.java delete mode 100644 app/src/main/java/com/trianguloy/urlchecker/utilities/UnaryOperator.java diff --git a/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java b/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java index 9bbf7ed..97f5a5a 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java +++ b/app/src/main/java/com/trianguloy/urlchecker/dialogs/MainDialog.java @@ -19,20 +19,20 @@ import com.trianguloy.urlchecker.R; import com.trianguloy.urlchecker.modules.AModuleData; import com.trianguloy.urlchecker.modules.AModuleDialog; import com.trianguloy.urlchecker.modules.ModuleManager; -import com.trianguloy.urlchecker.modules.companions.GlobalData; import com.trianguloy.urlchecker.url.UrlData; import com.trianguloy.urlchecker.utilities.AndroidSettings; import com.trianguloy.urlchecker.utilities.AndroidUtils; -import com.trianguloy.urlchecker.utilities.GlobalDataContainer; import com.trianguloy.urlchecker.utilities.Inflater; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * The main dialog, when opening a url */ -public class MainDialog extends Activity implements GlobalDataContainer { +public class MainDialog extends Activity { /** * Maximum number of updates to avoid loops @@ -46,6 +46,11 @@ public class MainDialog extends Activity implements GlobalDataContainer { */ private final List modules = new ArrayList<>(); + /** + * Global data to keep even if the url changes + */ + public final Map globalData = new HashMap<>(); + /** * The current url */ @@ -123,7 +128,6 @@ public class MainDialog extends Activity implements GlobalDataContainer { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AndroidSettings.setTheme(this, true); AndroidSettings.setLocale(this); requestWindowFeature(Window.FEATURE_NO_TITLE); @@ -248,12 +252,6 @@ public class MainDialog extends Activity implements GlobalDataContainer { return null; } - private final GlobalData gd = new GlobalData(); - @Override - public GlobalData getGlobalData() { - return gd; - } - /* ------------------- its a secret! ------------------- */ /** diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/AModuleDialog.java b/app/src/main/java/com/trianguloy/urlchecker/modules/AModuleDialog.java index 5e8283b..23463bf 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/AModuleDialog.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/AModuleDialog.java @@ -6,6 +6,8 @@ import com.trianguloy.urlchecker.dialogs.MainDialog; import com.trianguloy.urlchecker.fragments.Fragment; import com.trianguloy.urlchecker.url.UrlData; +import java.util.Map; + /** * Base class for a module's dialog fragment. */ @@ -65,4 +67,25 @@ public abstract class AModuleDialog implements Fragment { dialog.onNewUrl(urlData); } + /** + * saves global data + */ + public void putData(String key, String value) { + dialog.globalData.put(key, value); + } + + /** + * gets global data + */ + public String getData(String key) { + return dialog.globalData.get(key); + } + + /** + * returns the global data map, for advanced uses + */ + public Map getGlobalData() { + return dialog.globalData; + } + } diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/companions/GlobalData.java b/app/src/main/java/com/trianguloy/urlchecker/modules/companions/GlobalData.java deleted file mode 100644 index 6bbb07e..0000000 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/companions/GlobalData.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.trianguloy.urlchecker.modules.companions; - -import com.trianguloy.urlchecker.url.UrlData; - -import java.util.HashMap; -import java.util.Map; - -public class GlobalData { - /** - * Any key-value modules can set, will be kept with automatic updates - */ - private final Map extraData = new HashMap<>(); - - public GlobalData putData(String key, String value) { - extraData.put(key, value); - return this; - } - - public String getData(String key) { - return extraData.get(key); - } - - @Override - public String toString() { - return super.toString()+"{" + extraData + '}'; - } - -} diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/DebugModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/DebugModule.java index bcef567..ba63c03 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/DebugModule.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/DebugModule.java @@ -11,7 +11,6 @@ import com.trianguloy.urlchecker.modules.AModuleData; import com.trianguloy.urlchecker.modules.AModuleDialog; import com.trianguloy.urlchecker.services.CustomTabs; import com.trianguloy.urlchecker.url.UrlData; -import com.trianguloy.urlchecker.utilities.GlobalDataContainer; import java.util.List; @@ -80,8 +79,8 @@ class DebugDialog extends AModuleDialog { // show current url data urlData.toString(), // show global data - ((GlobalDataContainer) getActivity()).getGlobalData().toString()) - )); + getGlobalData().toString() + ))); } } diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/FlagsModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/FlagsModule.java index ca45736..b589b16 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/FlagsModule.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/FlagsModule.java @@ -19,9 +19,8 @@ import com.trianguloy.urlchecker.modules.AModuleConfig; import com.trianguloy.urlchecker.modules.AModuleData; import com.trianguloy.urlchecker.modules.AModuleDialog; import com.trianguloy.urlchecker.url.UrlData; -import com.trianguloy.urlchecker.utilities.DrawableButtonUtils; +import com.trianguloy.urlchecker.utilities.AndroidUtils; import com.trianguloy.urlchecker.utilities.GenericPref; -import com.trianguloy.urlchecker.utilities.GlobalDataContainer; import com.trianguloy.urlchecker.utilities.Inflater; import java.lang.reflect.Field; @@ -37,10 +36,8 @@ import java.util.Map; */ public class FlagsModule extends AModuleData { - public static GenericPref.Str DEFAULTFLAGS_PREF(Context cntx){ - String defaultValue = null; - return new GenericPref.Str("flagsEditor_defaultFlags", defaultValue, cntx) - .setStoreMod(str -> str.matches(FlagsDialog.REGEX) ? str : defaultValue); + public static GenericPref.Str DEFAULTFLAGS_PREF(Context cntx) { + return new GenericPref.Str("flagsEditor_defaultFlags", null, cntx); } @Override @@ -87,24 +84,24 @@ class FlagsDialog extends AModuleDialog { public FlagsDialog(MainDialog dialog) { super(dialog); - try{ + try { flagMap = new HashMap<>(); Collection manualFlags = getDeclaredFlags(); // Only get flags that are present for (Field field : Intent.class.getFields()) { - if (manualFlags.contains(field.getName())){ + if (manualFlags.contains(field.getName())) { flagMap.put(field.getName(), (Integer) field.get(null)); } } - }catch (IllegalAccessException e){ + } catch (IllegalAccessException e) { e.printStackTrace(); } defaultFlagsPref = FlagsModule.DEFAULTFLAGS_PREF(dialog); } - private Collection getDeclaredFlags(){ + private Collection getDeclaredFlags() { Collection manualFlags = new ArrayList<>(); // https://github.com/MuntashirAkon/AppManager/blob/19782da4c8556c817ba5795554a1cc21f38af13a/app/src/main/java/io/github/muntashirakon/AppManager/intercept/ActivityInterceptor.java#L92 manualFlags.add("FLAG_GRANT_READ_URI_PERMISSION"); @@ -166,16 +163,16 @@ class FlagsDialog extends AModuleDialog { flagNameText.setDropDownAnchor(R.id.addFlagLayout); // FIXME better search, currently it is an autofill, not a search // FIXME sometimes its hidden behind keyboard - + String defaultFlagsStr = defaultFlagsPref.get(); - if (defaultFlagsStr != null){ + if (defaultFlagsStr != null) { setFlags(toInteger(defaultFlagsStr)); } // Listeners add.setOnClickListener(v -> { Integer flag = flagMap.get(flagNameText.getText().toString()); - if (flag != null){ + if (flag != null) { setFlags(getFlagsNonNull() | flag); } else { Toast.makeText(getActivity(), R.string.mFlags_invalid, Toast.LENGTH_LONG).show(); @@ -190,9 +187,9 @@ class FlagsDialog extends AModuleDialog { setUrl(getUrl()); }); edit.setOnClickListener(v -> { - if (flagsHexText.isEnabled()){ + if (flagsHexText.isEnabled()) { Integer flags = toInteger(flagsHexText.getText().toString()); - if (flags != null){ + if (flags != null) { // Extract flags setFlags(flags); } @@ -216,7 +213,7 @@ class FlagsDialog extends AModuleDialog { updateLayout(); } - private void updateLayout(){ + private void updateLayout() { box.removeAllViews(); int flags = getFlagsNonNull(); flagsHexText.setText(toHexString(flags)); @@ -226,9 +223,9 @@ class FlagsDialog extends AModuleDialog { Collections.sort(decodedFlags, (o1, o2) -> flagMap.get(o1).compareTo(flagMap.get(o2))); if (decodedFlags.size() == 0) { - DrawableButtonUtils.setEnabled(more,false); + AndroidUtils.setEnabled(more, false); } else { - DrawableButtonUtils.setEnabled(more,true); + AndroidUtils.setEnabled(more, true); // For each flag, create a button for (String flag : decodedFlags) { var button_text = Inflater.inflate(R.layout.button_text, box, getActivity()); @@ -253,11 +250,11 @@ class FlagsDialog extends AModuleDialog { } // ------------------- utils ------------------- - private List decodeFlags(int hex){ + private List decodeFlags(int hex) { List foundFlags = new ArrayList<>(); for (String flagName : flagMap.keySet()) { // check if flag is present - if ((hex & flagMap.get(flagName)) != 0){ + if ((hex & flagMap.get(flagName)) != 0) { foundFlags.add(flagName); } } @@ -271,15 +268,15 @@ class FlagsDialog extends AModuleDialog { private static final int BASE = 16; protected static final String REGEX = "0x[a-fA-F\\d]{1,8}"; - public static Integer toInteger(String text){ - if (text != null && text.matches(REGEX)){ + public static Integer toInteger(String text) { + if (text != null && text.matches(REGEX)) { return Integer.parseInt(text.substring(2), BASE); } else { return null; } } - public static String toHexString(int flags){ + public static String toHexString(int flags) { return "0x" + Integer.toHexString(flags); } @@ -287,25 +284,25 @@ class FlagsDialog extends AModuleDialog { * Retrieves the flags from GlobalData, if it is not defined it will return null * Intended for use in other modules */ - public static Integer getFlagsNullable(GlobalDataContainer instance){ - return toInteger(instance.getGlobalData().getData(FlagsDialog.FLAGS)); + public static Integer getFlagsNullable(AModuleDialog instance) { + return toInteger(instance.getData(FlagsDialog.FLAGS)); } /** * Loads the flags from GlobalData, if none were found it gets the flags from the intent that * started this activity */ - private int getFlagsNonNull(){ - return getFlagsOrDefault((GlobalDataContainer) getActivity(), getActivity().getIntent().getFlags()); + private int getFlagsNonNull() { + return getFlagsOrDefault(this, getActivity().getIntent().getFlags()); } /** * Loads the flags from GlobalData, if none were found it gets the flags from default * Can be used by other modules */ - public static int getFlagsOrDefault(GlobalDataContainer instance, int defaultFlags){ - Integer flags = toInteger(instance.getGlobalData().getData(FLAGS)); - return flags == null? + public static int getFlagsOrDefault(AModuleDialog instance, int defaultFlags) { + Integer flags = toInteger(instance.getData(FLAGS)); + return flags == null ? defaultFlags : flags; } @@ -313,8 +310,8 @@ class FlagsDialog extends AModuleDialog { /** * Stores the flags in GlobalData */ - private void setFlags(Integer flags){ - ((GlobalDataContainer) getActivity()).getGlobalData().putData(FLAGS, flags == null ? null : toHexString(flags)); + private void setFlags(Integer flags) { + putData(FLAGS, flags == null ? null : toHexString(flags)); } } @@ -322,7 +319,7 @@ class FlagsDialog extends AModuleDialog { class FlagsConfig extends AModuleConfig { private final GenericPref.Str defaultFlagsPref; - public FlagsConfig(ModulesActivity activity){ + public FlagsConfig(ModulesActivity activity) { super(activity); defaultFlagsPref = FlagsModule.DEFAULTFLAGS_PREF(activity); } @@ -334,6 +331,6 @@ class FlagsConfig extends AModuleConfig { @Override public void onInitialize(View views) { - defaultFlagsPref.attachToEditText(views.findViewById(R.id.flags)); + defaultFlagsPref.attachToEditText(views.findViewById(R.id.flags), str -> str, str -> str.matches(FlagsDialog.REGEX) ? str : defaultFlagsPref.defaultValue); } } \ No newline at end of file diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/HistoryModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/HistoryModule.java index 4459909..07c3b52 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/HistoryModule.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/HistoryModule.java @@ -12,7 +12,7 @@ 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.DrawableButtonUtils; +import com.trianguloy.urlchecker.utilities.AndroidUtils; import java.util.ArrayList; import java.util.Collections; @@ -104,11 +104,11 @@ class HistoryDialog extends AModuleDialog { * updated the UI with the internal data (buttons visibility) */ private void updateUI() { - DrawableButtonUtils.setEnabled(first, index > 0); // at least something to go back - DrawableButtonUtils.setEnabled(back, index > 0); // at least something to go back + AndroidUtils.setEnabled(first, index > 0); // at least something to go back + AndroidUtils.setEnabled(back, index > 0); // at least something to go back list.setEnabled(!history.isEmpty()); // at least something - DrawableButtonUtils.setEnabled(forward, index < history.size() - 1); // at least something to go forward - DrawableButtonUtils.setEnabled(last, index < history.size() - 1); // at least something to go forward + AndroidUtils.setEnabled(forward, index < history.size() - 1); // at least something to go forward + AndroidUtils.setEnabled(last, index < history.size() - 1); // at least something to go forward } @Override diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/OpenModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/OpenModule.java index 969e773..e5533c8 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/OpenModule.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/OpenModule.java @@ -16,13 +16,11 @@ 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.ModuleManager; import com.trianguloy.urlchecker.modules.companions.CTabs; import com.trianguloy.urlchecker.modules.companions.LastOpened; import com.trianguloy.urlchecker.url.UrlData; import com.trianguloy.urlchecker.utilities.AndroidUtils; import com.trianguloy.urlchecker.utilities.GenericPref; -import com.trianguloy.urlchecker.utilities.GlobalDataContainer; import com.trianguloy.urlchecker.utilities.PackageUtils; import com.trianguloy.urlchecker.utilities.UrlUtils; @@ -185,8 +183,8 @@ class OpenDialog extends AModuleDialog { // check no apps if (packages.isEmpty()) { btn_open.setText(R.string.mOpen_noapps); + AndroidUtils.setEnabled(openParent, false); btn_open.setEnabled(false); - openParent.setAlpha(0.35f); btn_openWith.setVisibility(View.GONE); return; } @@ -196,8 +194,8 @@ class OpenDialog extends AModuleDialog { // set btn_open.setText(getActivity().getString(R.string.mOpen_with, PackageUtils.getPackageName(packages.get(0), getActivity()))); + AndroidUtils.setEnabled(openParent, true); btn_open.setEnabled(true); - openParent.setAlpha(1); menu.clear(); if (packages.size() == 1) { btn_openWith.setVisibility(View.GONE); @@ -252,12 +250,10 @@ class OpenDialog extends AModuleDialog { intent.removeExtra(CTabs.EXTRA); } - if (ModuleManager.getEnabledPrefOfModule(new FlagsModule(), getActivity()).get()){ - // Get flags from flags module - Integer flags = FlagsDialog.getFlagsNullable((GlobalDataContainer) getActivity()); - if (flags != null){ - intent.setFlags(flags); - } + // Get flags from global data (probably set by flags module, if active) + Integer flags = FlagsDialog.getFlagsNullable(this); + if (flags != null) { + intent.setFlags(flags); } PackageUtils.startActivity(intent, R.string.toast_noApp, getActivity()); diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/AndroidUtils.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/AndroidUtils.java index 2720806..aaebd07 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/AndroidUtils.java +++ b/app/src/main/java/com/trianguloy/urlchecker/utilities/AndroidUtils.java @@ -47,6 +47,15 @@ public interface AndroidUtils { } } + /** + * For some reason some drawable buttons are displayed the same when enabled and disabled. + * This method also sets an alpha as a workaround + */ + static void setEnabled(View view, boolean enabled) { + view.setEnabled(enabled); + view.setAlpha(enabled ? 1f : 0.35f); + } + /** * In debug mode, throws an AssertionError, in production just logs it and continues. */ diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/DrawableButtonUtils.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/DrawableButtonUtils.java deleted file mode 100644 index ac58585..0000000 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/DrawableButtonUtils.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.trianguloy.urlchecker.utilities; - -import android.view.View; - -public class DrawableButtonUtils { - /** - * For some reason some drawable buttons are displayed the same when enabled and disabled. - * This method also sets an alpha as a workaround - * - * @param view view to enable/disable - * @param enabled new state - */ - public static void setEnabled(View view, boolean enabled) { - view.setEnabled(enabled); - view.setAlpha(enabled ? 1f : 0.35f); - } -} diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/GenericPref.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/GenericPref.java index 0f25e92..3b31775 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/GenericPref.java +++ b/app/src/main/java/com/trianguloy/urlchecker/utilities/GenericPref.java @@ -36,7 +36,7 @@ public abstract class GenericPref { /** * This preference default value */ - protected final T defaultValue; + public final T defaultValue; /** * Constructs a generic pref with name and default value, uninitialized @@ -165,13 +165,8 @@ public abstract class GenericPref { * A string preference */ static public class Str extends GenericPref { - private UnaryOperator loadMod; - private UnaryOperator storeMod; - public Str(String prefName, String defaultValue, Context cntx) { super(prefName, defaultValue, cntx); - loadMod = str -> str; - storeMod = str -> str; } @Override @@ -195,6 +190,13 @@ public abstract class GenericPref { * This editText will be set to the pref value, and when the editText changes the value will too */ public void attachToEditText(EditText editText) { + this.attachToEditText(editText, str -> str, str -> str); + } + + /** + * This editText will be set to the pref value modified by loadMod, and when the editText changes the value will be modified by storeMod and saved + */ + public void attachToEditText(EditText editText, JavaUtils.UnaryOperator loadMod, JavaUtils.UnaryOperator storeMod) { editText.setText(loadMod.apply(get())); editText.addTextChangedListener(new TextWatcher() { @Override @@ -211,22 +213,6 @@ public abstract class GenericPref { } }); } - - /** - * Will be executed when loading pref into EditText - */ - public Str setLoadMod(UnaryOperator loadMod) { - this.loadMod = loadMod; - return this; - } - - /** - * Will be executed when storing pref from EditText - */ - public Str setStoreMod(UnaryOperator storeMod) { - this.storeMod = storeMod; - return this; - } } diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/GlobalDataContainer.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/GlobalDataContainer.java deleted file mode 100644 index 872a191..0000000 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/GlobalDataContainer.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.trianguloy.urlchecker.utilities; - -import com.trianguloy.urlchecker.modules.companions.GlobalData; - -public interface GlobalDataContainer { - GlobalData getGlobalData(); -} diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/JavaUtils.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/JavaUtils.java index feefda1..61feb6b 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/JavaUtils.java +++ b/app/src/main/java/com/trianguloy/urlchecker/utilities/JavaUtils.java @@ -61,4 +61,10 @@ public interface JavaUtils { R apply(T t); } + /** + * java.util.function.UnaryOperator requires api 24 + */ + @FunctionalInterface + interface UnaryOperator extends Function { + } } diff --git a/app/src/main/java/com/trianguloy/urlchecker/utilities/UnaryOperator.java b/app/src/main/java/com/trianguloy/urlchecker/utilities/UnaryOperator.java deleted file mode 100644 index 7c9d95a..0000000 --- a/app/src/main/java/com/trianguloy/urlchecker/utilities/UnaryOperator.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.trianguloy.urlchecker.utilities; - -public interface UnaryOperator { - T apply(T o); -} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 599cc81..aed0b66 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -292,7 +292,7 @@ Their api is rate limited to 10 requests per hour for new checks. The module res Add "[Beta feature] This is an advanced module, it allows you to edit the intent flags when opening another app. In the field below you can put flags that will overwrite the default ones, those are taken from the intent that was used to open this app. -While using the module you can hold the edit button to set the flags to the default flags. You can add flags by writing their name in the flags field +While using the module you can hold the edit button to set the flags to the default flags. You can add flags by writing their name in the flags field" FLAG_NAME