Просмотр исходного кода

android: Convert SliderSetting to Kotlin

Charles Lombardo 3 лет назад
Родитель
Сommit
89eed93ce0

+ 0 - 101
src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.java

@@ -1,101 +0,0 @@
-package org.yuzu.yuzu_emu.features.settings.model.view;
-
-import org.yuzu.yuzu_emu.features.settings.model.FloatSetting;
-import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
-import org.yuzu.yuzu_emu.features.settings.model.Setting;
-import org.yuzu.yuzu_emu.utils.Log;
-
-public final class SliderSetting extends SettingsItem {
-    private int mMin;
-    private int mMax;
-    private int mDefaultValue;
-
-    private String mUnits;
-
-    public SliderSetting(String key, String section, int titleId, int descriptionId,
-                         int min, int max, String units, int defaultValue, Setting setting) {
-        super(key, section, setting, titleId, descriptionId);
-        mMin = min;
-        mMax = max;
-        mUnits = units;
-        mDefaultValue = defaultValue;
-    }
-
-    public int getMin() {
-        return mMin;
-    }
-
-    public int getMax() {
-        return mMax;
-    }
-
-    public int getDefaultValue() {
-        return mDefaultValue;
-    }
-
-    public int getSelectedValue() {
-        Setting setting = getSetting();
-
-        if (setting == null) {
-            return mDefaultValue;
-        }
-
-        if (setting instanceof IntSetting) {
-            IntSetting intSetting = (IntSetting) setting;
-            return intSetting.getValue();
-        } else if (setting instanceof FloatSetting) {
-            FloatSetting floatSetting = (FloatSetting) setting;
-            return Math.round(floatSetting.getValue());
-        } else {
-            Log.error("[SliderSetting] Error casting setting type.");
-            return -1;
-        }
-    }
-
-    /**
-     * Write a value to the backing int. If that int was previously null,
-     * initializes a new one and returns it, so it can be added to the Hashmap.
-     *
-     * @param selection New value of the int.
-     * @return null if overwritten successfully otherwise; a newly created IntSetting.
-     */
-    public IntSetting setSelectedValue(int selection) {
-        if (getSetting() == null) {
-            IntSetting setting = new IntSetting(getKey(), getSection(), selection);
-            setSetting(setting);
-            return setting;
-        } else {
-            IntSetting setting = (IntSetting) getSetting();
-            setting.setValue(selection);
-            return null;
-        }
-    }
-
-    /**
-     * Write a value to the backing float. If that float was previously null,
-     * initializes a new one and returns it, so it can be added to the Hashmap.
-     *
-     * @param selection New value of the float.
-     * @return null if overwritten successfully otherwise; a newly created FloatSetting.
-     */
-    public FloatSetting setSelectedValue(float selection) {
-        if (getSetting() == null) {
-            FloatSetting setting = new FloatSetting(getKey(), getSection(), selection);
-            setSetting(setting);
-            return setting;
-        } else {
-            FloatSetting setting = (FloatSetting) getSetting();
-            setting.setValue(selection);
-            return null;
-        }
-    }
-
-    public String getUnits() {
-        return mUnits;
-    }
-
-    @Override
-    public int getType() {
-        return TYPE_SLIDER;
-    }
-}

+ 72 - 0
src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt

@@ -0,0 +1,72 @@
+package org.yuzu.yuzu_emu.features.settings.model.view
+
+import org.yuzu.yuzu_emu.features.settings.model.FloatSetting
+import org.yuzu.yuzu_emu.features.settings.model.IntSetting
+import org.yuzu.yuzu_emu.features.settings.model.Setting
+import org.yuzu.yuzu_emu.utils.Log
+import kotlin.math.roundToInt
+
+class SliderSetting(
+    key: String,
+    section: String,
+    setting: Setting?,
+    titleId: Int,
+    descriptionId: Int,
+    val min: Int,
+    val max: Int,
+    val units: String,
+    val defaultValue: Int,
+) : SettingsItem(key, section, setting, titleId, descriptionId) {
+    override val type = TYPE_SLIDER
+
+    val selectedValue: Int
+        get() {
+            val setting = setting ?: return defaultValue
+            return when (setting) {
+                is IntSetting -> setting.value
+                is FloatSetting -> setting.value.roundToInt()
+                else -> {
+                    Log.error("[SliderSetting] Error casting setting type.")
+                    -1
+                }
+            }
+        }
+
+    /**
+     * Write a value to the backing int. If that int was previously null,
+     * initializes a new one and returns it, so it can be added to the Hashmap.
+     *
+     * @param selection New value of the int.
+     * @return null if overwritten successfully otherwise; a newly created IntSetting.
+     */
+    fun setSelectedValue(selection: Int): IntSetting? {
+        return if (setting == null) {
+            val newSetting = IntSetting(key!!, section!!, selection)
+            setting = newSetting
+            newSetting
+        } else {
+            val newSetting = setting as IntSetting
+            newSetting.value = selection
+            null
+        }
+    }
+
+    /**
+     * Write a value to the backing float. If that float was previously null,
+     * initializes a new one and returns it, so it can be added to the Hashmap.
+     *
+     * @param selection New value of the float.
+     * @return null if overwritten successfully otherwise; a newly created FloatSetting.
+     */
+    fun setSelectedValue(selection: Float): FloatSetting? {
+        return if (setting == null) {
+            val newSetting = FloatSetting(key!!, section!!, selection)
+            setting = newSetting
+            newSetting
+        } else {
+            val newSetting = setting as FloatSetting
+            newSetting.value = selection
+            null
+        }
+    }
+}