Преглед на файлове

android: Convert SettingsItem to Kotlin

Charles Lombardo преди 3 години
родител
ревизия
22b44be0b2

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

@@ -1,100 +0,0 @@
-package org.yuzu.yuzu_emu.features.settings.model.view;
-
-import org.yuzu.yuzu_emu.features.settings.model.Setting;
-import org.yuzu.yuzu_emu.features.settings.model.Settings;
-import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
-
-/**
- * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments.
- * Each one corresponds to a {@link Setting} object, so this class's subclasses
- * should vaguely correspond to those subclasses. There are a few with multiple analogues
- * and a few with none (Headers, for example, do not correspond to anything in the ini
- * file.)
- */
-public abstract class SettingsItem {
-    public static final int TYPE_HEADER = 0;
-    public static final int TYPE_CHECKBOX = 1;
-    public static final int TYPE_SINGLE_CHOICE = 2;
-    public static final int TYPE_SLIDER = 3;
-    public static final int TYPE_SUBMENU = 4;
-    public static final int TYPE_STRING_SINGLE_CHOICE = 5;
-    public static final int TYPE_DATETIME_SETTING = 6;
-
-    private String mKey;
-    private String mSection;
-
-    private Setting mSetting;
-
-    private int mNameId;
-    private int mDescriptionId;
-    private boolean mIsPremium;
-
-    /**
-     * Base constructor. Takes a key / section name in case the third parameter, the Setting,
-     * is null; in which case, one can be constructed and saved using the key / section.
-     *
-     * @param key           Identifier for the Setting represented by this Item.
-     * @param section       Section to which the Setting belongs.
-     * @param setting       A possibly-null backing Setting, to be modified on UI events.
-     * @param nameId        Resource ID for a text string to be displayed as this setting's name.
-     * @param descriptionId Resource ID for a text string to be displayed as this setting's description.
-     */
-    public SettingsItem(String key, String section, Setting setting, int nameId,
-                        int descriptionId) {
-        mKey = key;
-        mSection = section;
-        mSetting = setting;
-        mNameId = nameId;
-        mDescriptionId = descriptionId;
-    }
-
-    /**
-     * @return The identifier for the backing Setting.
-     */
-    public String getKey() {
-        return mKey;
-    }
-
-    /**
-     * @return The header under which the backing Setting belongs.
-     */
-    public String getSection() {
-        return mSection;
-    }
-
-    /**
-     * @return The backing Setting, possibly null.
-     */
-    public Setting getSetting() {
-        return mSetting;
-    }
-
-    /**
-     * Replace the backing setting with a new one. Generally used in cases where
-     * the backing setting is null.
-     *
-     * @param setting A non-null Setting.
-     */
-    public void setSetting(Setting setting) {
-        mSetting = setting;
-    }
-
-    /**
-     * @return A resource ID for a text string representing this Setting's name.
-     */
-    public int getNameId() {
-        return mNameId;
-    }
-
-    public int getDescriptionId() {
-        return mDescriptionId;
-    }
-
-    /**
-     * Used by {@link SettingsAdapter}'s onCreateViewHolder()
-     * method to determine which type of ViewHolder should be created.
-     *
-     * @return An integer (ideally, one of the constants defined in this file)
-     */
-    public abstract int getType();
-}

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

@@ -0,0 +1,30 @@
+package org.yuzu.yuzu_emu.features.settings.model.view
+
+import org.yuzu.yuzu_emu.features.settings.model.Setting
+
+/**
+ * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments.
+ * Each one corresponds to a [Setting] object, so this class's subclasses
+ * should vaguely correspond to those subclasses. There are a few with multiple analogues
+ * and a few with none (Headers, for example, do not correspond to anything in the ini
+ * file.)
+ */
+abstract class SettingsItem(
+    val key: String?,
+    val section: String?,
+    var setting: Setting?,
+    val nameId: Int,
+    val descriptionId: Int?
+) {
+    abstract val type: Int
+
+    companion object {
+        const val TYPE_HEADER = 0
+        const val TYPE_CHECKBOX = 1
+        const val TYPE_SINGLE_CHOICE = 2
+        const val TYPE_SLIDER = 3
+        const val TYPE_SUBMENU = 4
+        const val TYPE_STRING_SINGLE_CHOICE = 5
+        const val TYPE_DATETIME_SETTING = 6
+    }
+}