From fd76a3c6fde0870b5d6fed14c1b8ff1bf90f00d9 Mon Sep 17 00:00:00 2001 From: olegivo Date: Thu, 13 Aug 2020 07:27:58 -0500 Subject: [PATCH] Konvert InterfaceUtils Co-authored-by: Alinson S. Xavier --- .../androidbase/utils/InterfaceUtils.java | 104 ------------------ .../androidbase/utils/InterfaceUtils.kt | 85 ++++++++++++++ .../common/dialogs/NumberPickerFactory.kt | 4 +- .../habits/list/views/NumberButtonView.kt | 2 +- 4 files changed, 88 insertions(+), 107 deletions(-) delete mode 100644 android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.java create mode 100644 android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt diff --git a/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.java b/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.java deleted file mode 100644 index e9d484cb1..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase.utils; - -import android.content.*; -import android.content.res.*; -import android.graphics.*; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.view.*; -import android.util.*; -import android.view.*; -import android.widget.*; - -public abstract class InterfaceUtils -{ - private static Typeface fontAwesome; - - @Nullable - private static Float fixedResolution = null; - - public static void setFixedResolution(@NonNull Float f) - { - fixedResolution = f; - } - - public static Typeface getFontAwesome(Context context) - { - if(fontAwesome == null) fontAwesome = - Typeface.createFromAsset(context.getAssets(), - "fontawesome-webfont.ttf"); - - return fontAwesome; - } - - public static float dpToPixels(Context context, float dp) - { - if(fixedResolution != null) return dp * fixedResolution; - - Resources resources = context.getResources(); - DisplayMetrics metrics = resources.getDisplayMetrics(); - return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); - } - - public static float spToPixels(Context context, float sp) - { - if(fixedResolution != null) return sp * fixedResolution; - - Resources resources = context.getResources(); - DisplayMetrics metrics = resources.getDisplayMetrics(); - return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, metrics); - } - - public static float getDimension(Context context, int id) - { - float dim = context.getResources().getDimension(id); - if (fixedResolution == null) return dim; - else - { - DisplayMetrics dm = context.getResources().getDisplayMetrics(); - float actualDensity = dm.density; - return dim / actualDensity * fixedResolution; - } - } - - public static void setupEditorAction(@NonNull ViewGroup parent, - @NonNull TextView.OnEditorActionListener listener) - { - for (int i = 0; i < parent.getChildCount(); i++) - { - View child = parent.getChildAt(i); - - if (child instanceof ViewGroup) - setupEditorAction((ViewGroup) child, listener); - - if (child instanceof TextView) - ((TextView) child).setOnEditorActionListener(listener); - } - } - - public static boolean isLayoutRtl(View view) - { - return ViewCompat.getLayoutDirection(view) == - ViewCompat.LAYOUT_DIRECTION_RTL; - } -} diff --git a/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt b/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt new file mode 100644 index 000000000..6ce0abae8 --- /dev/null +++ b/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.androidbase.utils + +import android.content.* +import android.graphics.* +import android.util.* +import android.view.* +import android.widget.* +import android.widget.TextView.* +import androidx.core.view.* + +object InterfaceUtils { + private var fontAwesome: Typeface? = null + private var fixedResolution: Float? = null + + @JvmStatic + fun setFixedResolution(f: Float) { + fixedResolution = f + } + + @JvmStatic + fun getFontAwesome(context: Context): Typeface? { + if (fontAwesome == null) { + fontAwesome = Typeface.createFromAsset(context.assets, "fontawesome-webfont.ttf") + } + return fontAwesome + } + + @JvmStatic + fun dpToPixels(context: Context, dp: Float): Float { + if (fixedResolution != null) return dp * fixedResolution!! + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + dp, + context.resources.displayMetrics) + } + + @JvmStatic + fun spToPixels(context: Context, sp: Float): Float { + if (fixedResolution != null) return sp * fixedResolution!! + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, + sp, + context.resources.displayMetrics) + } + + @JvmStatic + fun getDimension(context: Context, id: Int): Float { + val dim = context.resources.getDimension(id) + if (fixedResolution != null) { + val actualDensity = context.resources.displayMetrics.density + return dim / actualDensity * fixedResolution!! + } + return dim + } + + fun setupEditorAction(parent: ViewGroup, + listener: OnEditorActionListener) { + for (i in 0 until parent.childCount) { + val child = parent.getChildAt(i) + if (child is ViewGroup) setupEditorAction(child, listener) + if (child is TextView) child.setOnEditorActionListener(listener) + } + } + + fun isLayoutRtl(view: View?): Boolean { + return ViewCompat.getLayoutDirection(view!!) == + ViewCompat.LAYOUT_DIRECTION_RTL + } +} \ No newline at end of file diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt index e9328cf44..37d695545 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt @@ -76,11 +76,11 @@ class NumberPickerFactory dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) - InterfaceUtils.setupEditorAction(picker) { _, actionId, _ -> + InterfaceUtils.setupEditorAction(picker, TextView.OnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick() false - } + }) return dialog } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt index 53defd457..6c94366df 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt @@ -27,7 +27,7 @@ import android.view.View.* import com.google.auto.factory.* import org.isoron.androidbase.activities.* import org.isoron.androidbase.utils.* -import org.isoron.androidbase.utils.InterfaceUtils.* +import org.isoron.androidbase.utils.InterfaceUtils.getDimension import org.isoron.uhabits.* import org.isoron.uhabits.core.preferences.* import org.isoron.uhabits.utils.*