committed by
bunnei
2 changed files with 30 additions and 100 deletions
-
100src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.java
-
30src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@ -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(); |
|||
} |
|||
@ -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 |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue