/*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2021 Damyan Ivanov.
* This file is part of MoLe.
* MoLe is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
import android.app.Activity;
import android.content.res.Configuration;
+import android.os.Handler;
+import android.os.Looper;
+import android.text.Editable;
import android.view.WindowManager;
+import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
+import org.jetbrains.annotations.Contract;
+
public class Misc {
+ public static final char ZERO_WIDTH_SPACE = '\u200B';
public static boolean isZero(float f) {
return (f < 0.005) && (f > -0.005);
}
+ public static boolean equalFloats(float a, float b) { return isZero(a - b); }
public static void showSoftKeyboard(Activity activity) {
// make the keyboard appear
Configuration cf = activity.getResources()
}
public static String emptyIsNull(String str) {
- return "".equals(str) ? null : str;
+ return str != null && str.isEmpty() ? null : str;
}
public static String nullIsEmpty(String str) {
return (str == null) ? "" : str;
}
+ public static String nullIsEmpty(Editable e) {
+ if (e == null)
+ return "";
+ return e.toString();
+ }
+ public static boolean equalStrings(String u, CharSequence text) {
+ return nullIsEmpty(u).equals(text.toString());
+ }
+ public static boolean equalStrings(String a, String b) {
+ return nullIsEmpty(a).equals(nullIsEmpty(b));
+ }
+ public static String trim(@Nullable String string) {
+ if (string == null)
+ return null;
+
+ return string.trim();
+ }
+ @Contract(value = "null, null -> true; null, !null -> false; !null, null -> false", pure = true)
+ public static boolean equalIntegers(Integer a, Integer b) {
+ if (a == null && b == null)
+ return true;
+ if (a == null || b == null)
+ return false;
+
+ return a.equals(b);
+ }
+ @Contract(value = "null, null -> true; null, !null -> false; !null, null -> false", pure = true)
+ public static boolean equalLongs(Long a, Long b) {
+ if (a == null && b == null)
+ return true;
+ if (a == null || b == null)
+ return false;
+
+ return a.equals(b);
+ }
+ public static void onMainThread(Runnable r) {
+ new Handler(Looper.getMainLooper()).post(r);
+ }
+ public static String addWrapHints(String input) {
+ if (input == null)
+ return null;
+ StringBuilder result = new StringBuilder();
+ int lastPos = 0;
+ int pos = input.indexOf(':');
+
+ while (pos >= 0) {
+ result.append(input.substring(lastPos, pos + 1))
+ .append(ZERO_WIDTH_SPACE);
+ lastPos = pos + 1;
+ pos = input.indexOf(':', lastPos + 1);
+ }
+ if (lastPos > 0)
+ result.append(input.substring(lastPos));
+
+ return result.toString();
+ }
}