|
|
|
@ -13,6 +13,7 @@ import android.view.ViewGroup |
|
|
|
import android.widget.TextView |
|
|
|
import androidx.appcompat.app.AlertDialog |
|
|
|
import androidx.appcompat.app.AppCompatActivity |
|
|
|
import androidx.fragment.app.setFragmentResultListener |
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
import com.google.android.material.datepicker.MaterialDatePicker |
|
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder |
|
|
|
@ -24,6 +25,11 @@ import org.yuzu.yuzu_emu.databinding.DialogSliderBinding |
|
|
|
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding |
|
|
|
import org.yuzu.yuzu_emu.databinding.ListItemSettingSwitchBinding |
|
|
|
import org.yuzu.yuzu_emu.databinding.ListItemSettingsHeaderBinding |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.AbstractFloatSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.FloatSetting |
|
|
|
import org.yuzu.yuzu_emu.features.settings.model.view.* |
|
|
|
import org.yuzu.yuzu_emu.features.settings.ui.viewholder.* |
|
|
|
@ -52,21 +58,27 @@ class SettingsAdapter( |
|
|
|
SettingsItem.TYPE_HEADER -> { |
|
|
|
HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
SettingsItem.TYPE_SWITCH -> { |
|
|
|
SwitchSettingViewHolder(ListItemSettingSwitchBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
SettingsItem.TYPE_SINGLE_CHOICE, SettingsItem.TYPE_STRING_SINGLE_CHOICE -> { |
|
|
|
SingleChoiceViewHolder(ListItemSettingBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
SettingsItem.TYPE_SLIDER -> { |
|
|
|
SliderViewHolder(ListItemSettingBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
SettingsItem.TYPE_SUBMENU -> { |
|
|
|
SubmenuViewHolder(ListItemSettingBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
SettingsItem.TYPE_DATETIME_SETTING -> { |
|
|
|
DateTimeViewHolder(ListItemSettingBinding.inflate(inflater), this) |
|
|
|
} |
|
|
|
|
|
|
|
else -> { |
|
|
|
// TODO: Create an error view since we can't return null now |
|
|
|
HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) |
|
|
|
@ -176,7 +188,10 @@ class SettingsAdapter( |
|
|
|
item.setSelectedValue(rtcString) |
|
|
|
clickedItem = null |
|
|
|
} |
|
|
|
datePicker.show((fragmentView.activityView as AppCompatActivity).supportFragmentManager, "DatePicker") |
|
|
|
datePicker.show( |
|
|
|
(fragmentView.activityView as AppCompatActivity).supportFragmentManager, |
|
|
|
"DatePicker" |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
fun onSliderClick(item: SliderSetting, position: Int) { |
|
|
|
@ -231,6 +246,7 @@ class SettingsAdapter( |
|
|
|
fragmentView.putSetting(setting) |
|
|
|
closeDialog() |
|
|
|
} |
|
|
|
|
|
|
|
is StringSingleChoiceSetting -> { |
|
|
|
val scSetting = clickedItem as StringSingleChoiceSetting |
|
|
|
val value = scSetting.getValueAt(which) |
|
|
|
@ -239,6 +255,7 @@ class SettingsAdapter( |
|
|
|
fragmentView.putSetting(setting) |
|
|
|
closeDialog() |
|
|
|
} |
|
|
|
|
|
|
|
is SliderSetting -> { |
|
|
|
val sliderSetting = clickedItem as SliderSetting |
|
|
|
if (sliderSetting.selectedValue != sliderProgress) { |
|
|
|
@ -259,6 +276,25 @@ class SettingsAdapter( |
|
|
|
sliderProgress = -1 |
|
|
|
} |
|
|
|
|
|
|
|
fun onLongClick(setting: AbstractSetting, position: Int): Boolean { |
|
|
|
MaterialAlertDialogBuilder(context) |
|
|
|
.setMessage(R.string.reset_setting_confirmation) |
|
|
|
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, which: Int -> |
|
|
|
when (setting) { |
|
|
|
is AbstractBooleanSetting -> setting.boolean = setting.defaultValue as Boolean |
|
|
|
is AbstractFloatSetting -> setting.float = setting.defaultValue as Float |
|
|
|
is AbstractIntSetting -> setting.int = setting.defaultValue as Int |
|
|
|
is AbstractStringSetting -> setting.string = setting.defaultValue as String |
|
|
|
} |
|
|
|
notifyItemChanged(position) |
|
|
|
fragmentView.onSettingChanged() |
|
|
|
} |
|
|
|
.setNegativeButton(android.R.string.cancel, null) |
|
|
|
.show() |
|
|
|
|
|
|
|
return true |
|
|
|
} |
|
|
|
|
|
|
|
fun closeDialog() { |
|
|
|
if (dialog != null) { |
|
|
|
if (clickedPosition != -1) { |
|
|
|
|