summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt14
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt36
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.kt5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt197
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt45
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingsSearchResultViewHolder.kt3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.kt79
8 files changed, 162 insertions, 221 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt
index 1135dca463..19c08b9a05 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.kt
@@ -127,15 +127,13 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView, ThemeProvide
}
refreshToolbarState()
- val focusDelay =
- if (areSystemAnimationsEnabled()) SEARCH_FOCUS_DELAY_MS else 0L
+ val focusDelay = if (areSystemAnimationsEnabled()) SEARCH_FOCUS_DELAY_MS else 0L
searchView.postDelayed({
if (!isSettingsSearchActive) {
return@postDelayed
}
searchView.requestFocus()
- WindowCompat.getInsetsController(window, searchView)
- .show(WindowInsetsCompat.Type.ime())
+ WindowCompat.getInsetsController(window, searchView).show(WindowInsetsCompat.Type.ime())
}, focusDelay)
}
@@ -153,18 +151,14 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView, ThemeProvide
private fun refreshToolbarState() {
val title = currentToolbarTitle ?: getString(R.string.settings)
setToolbarState(
- title,
- currentToolbarShowsHeadline,
- currentToolbarShowsSearch
+ title, currentToolbarShowsHeadline, currentToolbarShowsSearch
)
}
private fun setUpBackNavigation() {
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
- if (supportFragmentManager.backStackEntryCount == 0 &&
- isSettingsSearchActive
- ) {
+ if (supportFragmentManager.backStackEntryCount == 0 && isSettingsSearchActive) {
exitSettingsSearch()
return
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt
index 1615911fb6..5baee17f02 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt
@@ -10,8 +10,7 @@ import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
import org.dolphinemu.dolphinemu.utils.Log
class SettingsActivityPresenter(
- private val activityView: SettingsActivityView,
- var settings: Settings?
+ private val activityView: SettingsActivityView, var settings: Settings?
) {
private var menuTag: MenuTag? = null
private var gameId: String? = null
@@ -141,34 +140,25 @@ class SettingsActivityPresenter(
private fun getMenuTagAction(menuTag: MenuTag, value: Int): MenuTagAction? {
return when {
// Not disabled or dummy
- menuTag.isSerialPort1Menu && value != 0 && value != 255 ->
- MenuTagAction(
- menuTag,
- Bundle().apply {
- putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value)
- }
- )
+ menuTag.isSerialPort1Menu && value != 0 && value != 255 -> MenuTagAction(
+ menuTag, Bundle().apply {
+ putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value)
+ })
// Not disabled
- menuTag.isGCPadMenu && value != 0 ->
- MenuTagAction(
- menuTag,
- Bundle().apply {
- putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
- }
- )
+ menuTag.isGCPadMenu && value != 0 -> MenuTagAction(
+ menuTag, Bundle().apply {
+ putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
+ })
// Emulated Wii Remote
menuTag.isWiimoteMenu && value == 1 -> MenuTagAction(menuTag, null)
// Not disabled
- menuTag.isWiimoteExtensionMenu && value != 0 ->
- MenuTagAction(
- menuTag,
- Bundle().apply {
- putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
- }
- )
+ menuTag.isWiimoteExtensionMenu && value != 0 -> MenuTagAction(
+ menuTag, Bundle().apply {
+ putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
+ })
else -> null
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.kt
index 44f02bc3f8..95951f1ae9 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.kt
@@ -27,10 +27,7 @@ interface SettingsActivityView {
* @param addToStack Whether or not this fragment should replace a previous one.
*/
fun showSettingsFragment(
- menuTag: MenuTag,
- extras: Bundle?,
- addToStack: Boolean,
- gameId: String
+ menuTag: MenuTag, extras: Bundle?, addToStack: Boolean, gameId: String
)
/**
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt
index 2492a0113a..6252350d32 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.kt
@@ -27,14 +27,46 @@ import com.google.android.material.slider.Slider
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import org.dolphinemu.dolphinemu.R
-import org.dolphinemu.dolphinemu.databinding.*
+import org.dolphinemu.dolphinemu.databinding.DialogAdvancedMappingBinding
+import org.dolphinemu.dolphinemu.databinding.DialogInputStringBinding
+import org.dolphinemu.dolphinemu.databinding.DialogSliderBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemHeaderBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemMappingBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemSearchResultBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemSettingBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemSettingSwitchBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemSubmenuBinding
import org.dolphinemu.dolphinemu.features.input.model.view.InputMappingControlSetting
import org.dolphinemu.dolphinemu.features.input.ui.AdvancedMappingDialog
import org.dolphinemu.dolphinemu.features.input.ui.MotionAlertDialog
import org.dolphinemu.dolphinemu.features.input.ui.viewholder.InputMappingControlSettingViewHolder
import org.dolphinemu.dolphinemu.features.settings.model.Settings
-import org.dolphinemu.dolphinemu.features.settings.model.view.*
-import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.*
+import org.dolphinemu.dolphinemu.features.settings.model.view.DateTimeChoiceSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.DirectoryPicker
+import org.dolphinemu.dolphinemu.features.settings.model.view.FilePicker
+import org.dolphinemu.dolphinemu.features.settings.model.view.FloatSliderSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.InputStringSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.IntSliderSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsSearchResult
+import org.dolphinemu.dolphinemu.features.settings.model.view.SingleChoiceSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.SingleChoiceSettingDynamicDescriptions
+import org.dolphinemu.dolphinemu.features.settings.model.view.SliderSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.StringSingleChoiceSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.SwitchSetting
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.DateTimeSettingViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.FilePickerViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.HeaderHyperLinkViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.HeaderViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.InputStringSettingViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.RunRunnableViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SettingViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SettingsSearchResultViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SingleChoiceViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SliderViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SubmenuViewHolder
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SwitchSettingViewHolder
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
import org.dolphinemu.dolphinemu.utils.FileBrowserHelper
import org.dolphinemu.dolphinemu.utils.Log
@@ -42,14 +74,13 @@ import org.dolphinemu.dolphinemu.utils.PermissionsHandler
import java.io.File
import java.io.IOException
import java.io.RandomAccessFile
-import java.util.*
+import java.util.Calendar
+import java.util.TimeZone
import kotlin.math.roundToInt
class SettingsAdapter(
- private val fragmentView: SettingsFragmentView,
- private val context: Context
-) :
- RecyclerView.Adapter<SettingViewHolder>(), DialogInterface.OnClickListener,
+ private val fragmentView: SettingsFragmentView, private val context: Context
+) : RecyclerView.Adapter<SettingViewHolder>(), DialogInterface.OnClickListener,
Slider.OnChangeListener {
private var settingsList: ArrayList<SettingsItem>? = null
private var clickedItem: SettingsItem? = null
@@ -68,53 +99,53 @@ class SettingsAdapter(
val inflater = LayoutInflater.from(parent.context)
return when (viewType) {
SettingsItem.TYPE_HEADER -> HeaderViewHolder(
- ListItemHeaderBinding.inflate(inflater, parent, false),
- this
+ ListItemHeaderBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_SWITCH -> SwitchSettingViewHolder(
- ListItemSettingSwitchBinding.inflate(inflater, parent, false),
- this
+ ListItemSettingSwitchBinding.inflate(inflater, parent, false), this
)
- SettingsItem.TYPE_STRING_SINGLE_CHOICE,
- SettingsItem.TYPE_SINGLE_CHOICE_DYNAMIC_DESCRIPTIONS,
- SettingsItem.TYPE_SINGLE_CHOICE -> SingleChoiceViewHolder(
- ListItemSettingBinding.inflate(inflater, parent, false),
- this
+
+ SettingsItem.TYPE_STRING_SINGLE_CHOICE, SettingsItem.TYPE_SINGLE_CHOICE_DYNAMIC_DESCRIPTIONS, SettingsItem.TYPE_SINGLE_CHOICE -> SingleChoiceViewHolder(
+ ListItemSettingBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_SLIDER -> SliderViewHolder(
- ListItemSettingBinding.inflate(inflater, parent, false),
- this,
- context
+ ListItemSettingBinding.inflate(inflater, parent, false), this, context
)
+
SettingsItem.TYPE_SUBMENU -> SubmenuViewHolder(
- ListItemSubmenuBinding.inflate(inflater, parent, false),
- this
+ ListItemSubmenuBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_INPUT_MAPPING_CONTROL -> InputMappingControlSettingViewHolder(
- ListItemMappingBinding.inflate(inflater, parent, false),
- this
+ ListItemMappingBinding.inflate(inflater, parent, false), this
)
- SettingsItem.TYPE_FILE_PICKER,
- SettingsItem.TYPE_DIRECTORY_PICKER -> FilePickerViewHolder(
- ListItemSettingBinding.inflate(inflater, parent, false),
- this
+
+ SettingsItem.TYPE_FILE_PICKER, SettingsItem.TYPE_DIRECTORY_PICKER -> FilePickerViewHolder(
+ ListItemSettingBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_RUN_RUNNABLE -> RunRunnableViewHolder(
- ListItemSettingBinding.inflate(inflater, parent, false),
- this, context
+ ListItemSettingBinding.inflate(inflater, parent, false), this, context
)
+
SettingsItem.TYPE_STRING -> InputStringSettingViewHolder(
ListItemSettingBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_HYPERLINK_HEADER -> HeaderHyperLinkViewHolder(
ListItemHeaderBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_DATETIME_CHOICE -> DateTimeSettingViewHolder(
ListItemSettingBinding.inflate(inflater, parent, false), this
)
+
SettingsItem.TYPE_SEARCH_RESULT -> SettingsSearchResultViewHolder(
ListItemSearchResultBinding.inflate(inflater, parent, false), this
)
+
else -> throw IllegalArgumentException("Invalid view type: $viewType")
}
}
@@ -165,8 +196,7 @@ class SettingsAdapter(
val binding = DialogInputStringBinding.inflate(inflater)
val input = binding.input
input.setText(item.selectedValue)
- dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setView(binding.root)
+ dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setView(binding.root)
.setMessage(item.description)
.setPositiveButton(R.string.ok) { _: DialogInterface?, _: Int ->
val editTextInput = input.text.toString()
@@ -175,19 +205,15 @@ class SettingsAdapter(
fragmentView.onSettingChanged(item)
}
item.setSelectedValue(fragmentView.settings!!, editTextInput)
- }
- .setNegativeButton(R.string.cancel, null)
- .show()
+ }.setNegativeButton(R.string.cancel, null).show()
}
fun onSingleChoiceClick(item: SingleChoiceSetting, position: Int) {
clickedItem = item
clickedPosition = position
val value = getSelectionForSingleChoiceValue(item)
- dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setTitle(item.name)
- .setSingleChoiceItems(item.choicesId, value, this)
- .show()
+ dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setTitle(item.name)
+ .setSingleChoiceItems(item.choicesId, value, this).show()
}
fun onStringSingleChoiceClick(item: StringSingleChoiceSetting, position: Int) {
@@ -197,35 +223,26 @@ class SettingsAdapter(
val choices = item.choices
val noChoicesAvailableString = item.noChoicesAvailableString
dialog = if (noChoicesAvailableString != 0 && choices.isEmpty()) {
- MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setTitle(item.name)
- .setMessage(noChoicesAvailableString)
- .setPositiveButton(R.string.ok, null)
- .show()
+ MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setTitle(item.name)
+ .setMessage(noChoicesAvailableString).setPositiveButton(R.string.ok, null).show()
} else {
- MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setTitle(item.name)
+ MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setTitle(item.name)
.setSingleChoiceItems(
- item.choices, item.selectedValueIndex,
- this
- )
- .show()
+ item.choices, item.selectedValueIndex, this
+ ).show()
}
}
fun onSingleChoiceDynamicDescriptionsClick(
- item: SingleChoiceSettingDynamicDescriptions,
- position: Int
+ item: SingleChoiceSettingDynamicDescriptions, position: Int
) {
clickedItem = item
clickedPosition = position
val value = getSelectionForSingleChoiceDynamicDescriptionsValue(item)
- dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setTitle(item.name)
- .setSingleChoiceItems(item.choicesId, value, this)
- .show()
+ dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setTitle(item.name)
+ .setSingleChoiceItems(item.choicesId, value, this).show()
}
fun onSliderClick(item: SliderSetting, position: Int) {
@@ -255,6 +272,7 @@ class SettingsAdapter(
slider.valueTo = item.max
slider.stepSize = item.stepSize
}
+
is IntSliderSetting -> {
slider.valueFrom = item.min.toFloat()
slider.valueTo = item.max.toFloat()
@@ -264,11 +282,8 @@ class SettingsAdapter(
slider.value = (seekbarProgress / slider.stepSize).roundToInt() * slider.stepSize
slider.addOnChangeListener(this)
- dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setTitle(item.name)
- .setView(binding.root)
- .setPositiveButton(R.string.ok, this)
- .show()
+ dialog = MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setTitle(item.name)
+ .setView(binding.root).setPositiveButton(R.string.ok, this).show()
}
fun onSubmenuClick(item: SubmenuSetting) {
@@ -281,16 +296,13 @@ class SettingsAdapter(
fun onInputMappingClick(item: InputMappingControlSetting, position: Int) {
if (item.controller.getDefaultDevice().isEmpty() && !fragmentView.isMappingAllDevices) {
- MaterialAlertDialogBuilder(fragmentView.fragmentActivity)
- .setMessage(R.string.input_binding_no_device)
- .setPositiveButton(R.string.ok, this)
- .show()
+ MaterialAlertDialogBuilder(fragmentView.fragmentActivity).setMessage(R.string.input_binding_no_device)
+ .setPositiveButton(R.string.ok, this).show()
return
}
val dialog = MotionAlertDialog(
- fragmentView.fragmentActivity, item,
- fragmentView.isMappingAllDevices
+ fragmentView.fragmentActivity, item, fragmentView.isMappingAllDevices
)
val background = ContextCompat.getDrawable(context, R.drawable.dialog_round)
@@ -304,14 +316,12 @@ class SettingsAdapter(
dialog.setTitle(R.string.input_binding)
dialog.setMessage(
String.format(
- context.getString(R.string.input_binding_description),
- item.name
+ context.getString(R.string.input_binding_description), item.name
)
)
dialog.setButton(AlertDialog.BUTTON_NEGATIVE, context.getString(R.string.cancel), this)
dialog.setButton(
- AlertDialog.BUTTON_NEUTRAL,
- context.getString(R.string.clear)
+ AlertDialog.BUTTON_NEUTRAL, context.getString(R.string.clear)
) { _: DialogInterface?, _: Int -> item.clearValue() }
dialog.setOnDismissListener {
notifyItemChanged(position)
@@ -325,10 +335,7 @@ class SettingsAdapter(
val inflater = LayoutInflater.from(context)
val binding = DialogAdvancedMappingBinding.inflate(inflater)
val dialog = AdvancedMappingDialog(
- context,
- binding,
- item.controlReference,
- item.controller
+ context, binding, item.controlReference, item.controller
)
val background = ContextCompat.getDrawable(context, R.drawable.dialog_round)
@@ -350,8 +357,7 @@ class SettingsAdapter(
}
dialog.setButton(AlertDialog.BUTTON_NEGATIVE, context.getString(R.string.cancel), this)
dialog.setButton(
- AlertDialog.BUTTON_NEUTRAL,
- context.getString(R.string.clear)
+ AlertDialog.BUTTON_NEUTRAL, context.getString(R.string.clear)
) { _: DialogInterface?, _: Int -> }
dialog.setCanceledOnTouchOutside(false)
dialog.show()
@@ -369,14 +375,12 @@ class SettingsAdapter(
val directoryPicker = item as DirectoryPicker
if (!PermissionsHandler.isExternalStorageLegacy()) {
- MaterialAlertDialogBuilder(context)
- .setMessage(R.string.path_not_changeable_scoped_storage)
+ MaterialAlertDialogBuilder(context).setMessage(R.string.path_not_changeable_scoped_storage)
.setPositiveButton(R.string.ok) { dialog: DialogInterface, _: Int -> dialog.dismiss() }
.show()
} else {
val intent = FileBrowserHelper.createDirectoryPickerIntent(
- fragmentView.fragmentActivity,
- FileBrowserHelper.GAME_EXTENSIONS
+ fragmentView.fragmentActivity, FileBrowserHelper.GAME_EXTENSIONS
)
directoryPicker.launcher.launch(intent)
}
@@ -408,32 +412,24 @@ class SettingsAdapter(
calendar.timeZone = TimeZone.getTimeZone("UTC")
// Start and end epoch times available for the Wii's date picker
- val calendarConstraints = CalendarConstraints.Builder()
- .setStart(946684800000L)
- .setEnd(2082672000000L)
- .build()
+ val calendarConstraints =
+ CalendarConstraints.Builder().setStart(946684800000L).setEnd(2082672000000L).build()
var timeFormat = TimeFormat.CLOCK_12H
if (DateFormat.is24HourFormat(fragmentView.fragmentActivity)) {
timeFormat = TimeFormat.CLOCK_24H
}
- val datePicker = MaterialDatePicker.Builder.datePicker()
- .setSelection(storedTime)
- .setTitleText(R.string.select_rtc_date)
- .setCalendarConstraints(calendarConstraints)
- .build()
- val timePicker = MaterialTimePicker.Builder()
- .setTimeFormat(timeFormat)
- .setHour(calendar[Calendar.HOUR_OF_DAY])
- .setMinute(calendar[Calendar.MINUTE])
- .setTitleText(R.string.select_rtc_time)
+ val datePicker = MaterialDatePicker.Builder.datePicker().setSelection(storedTime)
+ .setTitleText(R.string.select_rtc_date).setCalendarConstraints(calendarConstraints)
.build()
+ val timePicker = MaterialTimePicker.Builder().setTimeFormat(timeFormat)
+ .setHour(calendar[Calendar.HOUR_OF_DAY]).setMinute(calendar[Calendar.MINUTE])
+ .setTitleText(R.string.select_rtc_time).build()
datePicker.addOnPositiveButtonClickListener {
timePicker.show(
- fragmentView.fragmentActivity.supportFragmentManager,
- "TimePicker"
+ fragmentView.fragmentActivity.supportFragmentManager, "TimePicker"
)
}
timePicker.addOnPositiveButtonClickListener {
@@ -484,6 +480,7 @@ class SettingsAdapter(
closeDialog()
}
+
is SingleChoiceSettingDynamicDescriptions -> {
val scSetting = clickedItem as SingleChoiceSettingDynamicDescriptions
@@ -494,6 +491,7 @@ class SettingsAdapter(
closeDialog()
}
+
is StringSingleChoiceSetting -> {
val scSetting = clickedItem as StringSingleChoiceSetting
@@ -504,6 +502,7 @@ class SettingsAdapter(
closeDialog()
}
+
is IntSliderSetting -> {
val sliderSetting = clickedItem as IntSliderSetting
if (sliderSetting.selectedValue != seekbarProgress.toInt()) {
@@ -512,6 +511,7 @@ class SettingsAdapter(
sliderSetting.setSelectedValue(settings!!, seekbarProgress.toInt())
closeDialog()
}
+
is FloatSliderSetting -> {
val sliderSetting = clickedItem as FloatSliderSetting
@@ -598,8 +598,7 @@ class SettingsAdapter(
}
private fun getValueForSingleChoiceDynamicDescriptionsSelection(
- item: SingleChoiceSettingDynamicDescriptions,
- which: Int
+ item: SingleChoiceSettingDynamicDescriptions, which: Int
): Int {
val valuesId = item.valuesId
return if (valuesId > 0) {
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
index 7e6f646478..e0f96e77f1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
@@ -39,8 +39,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SettingViewHolder
import org.dolphinemu.dolphinemu.utils.GpuDriverInstallResult
import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable
-import java.util.*
-import kotlin.collections.ArrayList
+import java.util.EnumMap
class SettingsFragment : Fragment(), SettingsFragmentView {
private lateinit var presenter: SettingsFragmentPresenter
@@ -93,9 +92,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
}
override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
+ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
binding = FragmentSettingsBinding.inflate(inflater, container, false)
return binding!!.root
@@ -161,15 +158,15 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
}
val position = arguments?.getInt(
- ARGUMENT_SCROLL_TO_SETTING_POSITION,
- RecyclerView.NO_POSITION
+ ARGUMENT_SCROLL_TO_SETTING_POSITION, RecyclerView.NO_POSITION
) ?: RecyclerView.NO_POSITION
if (!hasScrolledToSearchResult && position in settingsList.indices) {
hasScrolledToSearchResult = true
binding?.listSettings?.post {
val recyclerView = binding?.listSettings ?: return@post
- (recyclerView.layoutManager as? LinearLayoutManager)
- ?.scrollToPositionWithOffset(position, 0)
+ (recyclerView.layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(
+ position, 0
+ )
highlightSearchResult(position, settingsList[position])
}
}
@@ -231,19 +228,13 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
}
activityView!!.showSettingsFragment(
- menuKey,
- null,
- true,
- requireArguments().getString(ARGUMENT_GAME_ID)!!
+ menuKey, null, true, requireArguments().getString(ARGUMENT_GAME_ID)!!
)
}
override fun loadSearchResult(menuKey: MenuTag, settingPosition: Int, extras: Bundle?) {
activityView!!.showSearchResult(
- menuKey,
- settingPosition,
- requireArguments().getString(ARGUMENT_GAME_ID)!!,
- extras
+ menuKey, settingPosition, requireArguments().getString(ARGUMENT_GAME_ID)!!, extras
)
}
@@ -331,17 +322,13 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
}
val msg = "${presenter.gpuDriver!!.name} ${presenter.gpuDriver!!.driverVersion}"
- MaterialAlertDialogBuilder(requireContext())
- .setTitle(getString(R.string.gpu_driver_dialog_title))
- .setMessage(msg)
- .setNegativeButton(android.R.string.cancel, null)
+ MaterialAlertDialogBuilder(requireContext()).setTitle(getString(R.string.gpu_driver_dialog_title))
+ .setMessage(msg).setNegativeButton(android.R.string.cancel, null)
.setNeutralButton(R.string.gpu_driver_dialog_system) { _: DialogInterface?, _: Int ->
presenter.useSystemDriver()
- }
- .setPositiveButton(R.string.gpu_driver_dialog_install) { _: DialogInterface?, _: Int ->
+ }.setPositiveButton(R.string.gpu_driver_dialog_install) { _: DialogInterface?, _: Int ->
askForDriverFile()
- }
- .show()
+ }.show()
}
override fun getFragmentLifecycle(): Lifecycle {
@@ -358,16 +345,12 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
override fun onDriverInstallDone(result: GpuDriverInstallResult) {
val view = binding?.root ?: return
- Snackbar
- .make(view, resolveInstallResultString(result), Snackbar.LENGTH_LONG)
- .show()
+ Snackbar.make(view, resolveInstallResultString(result), Snackbar.LENGTH_LONG).show()
}
override fun onDriverUninstallDone() {
Toast.makeText(
- requireContext(),
- R.string.gpu_driver_dialog_uninstall_done,
- Toast.LENGTH_SHORT
+ requireContext(), R.string.gpu_driver_dialog_uninstall_done, Toast.LENGTH_SHORT
).show()
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt
index f1ba059864..77414fedce 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt
@@ -4,11 +4,11 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder
import android.animation.ValueAnimator
import android.content.DialogInterface
+import android.graphics.Paint
+import android.graphics.Typeface
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable
-import android.graphics.Paint
-import android.graphics.Typeface
import android.view.View
import android.view.View.OnLongClickListener
import android.view.animation.DecelerateInterpolator
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingsSearchResultViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingsSearchResultViewHolder.kt
index f9bad5042b..9471d6bf43 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingsSearchResultViewHolder.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingsSearchResultViewHolder.kt
@@ -9,8 +9,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsSearchResu
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter
class SettingsSearchResultViewHolder(
- private val binding: ListItemSearchResultBinding,
- adapter: SettingsAdapter
+ private val binding: ListItemSearchResultBinding, adapter: SettingsAdapter
) : SettingViewHolder(binding.root, adapter) {
private lateinit var result: SettingsSearchResult
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.kt
index 89ff3e0cb0..8b41fc6c55 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.kt
@@ -1,20 +1,20 @@
package org.dolphinemu.dolphinemu.utils
-import androidx.appcompat.app.AppCompatActivity
-import org.dolphinemu.dolphinemu.R
+import android.content.res.Configuration
import android.os.Build
-import androidx.core.content.ContextCompat
+import androidx.annotation.ColorInt
+import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
-import androidx.core.view.WindowInsetsControllerCompat
+import androidx.core.content.ContextCompat
import androidx.core.view.WindowCompat
-import org.dolphinemu.dolphinemu.ui.main.ThemeProvider
-import android.content.res.Configuration
-import com.google.android.material.appbar.MaterialToolbar
+import androidx.core.view.WindowInsetsControllerCompat
+import androidx.preference.PreferenceManager
import com.google.android.material.appbar.AppBarLayout
-import com.google.android.material.elevation.ElevationOverlayProvider
+import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.color.MaterialColors
-import androidx.annotation.ColorInt
-import androidx.preference.PreferenceManager
+import com.google.android.material.elevation.ElevationOverlayProvider
+import org.dolphinemu.dolphinemu.R
+import org.dolphinemu.dolphinemu.ui.main.ThemeProvider
object ThemeHelper {
@@ -52,8 +52,7 @@ object ThemeHelper {
.getInt(CURRENT_THEME_MODE, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
activity.delegate.localNightMode = themeMode
val windowController = WindowCompat.getInsetsController(
- activity.window,
- activity.window.decorView
+ activity.window, activity.window.decorView
)
val systemReportedThemeMode =
activity.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
@@ -62,6 +61,7 @@ object ThemeHelper {
Configuration.UI_MODE_NIGHT_NO -> setLightModeSystemBars(windowController)
Configuration.UI_MODE_NIGHT_YES -> setDarkModeSystemBars(windowController)
}
+
AppCompatDelegate.MODE_NIGHT_NO -> setLightModeSystemBars(windowController)
AppCompatDelegate.MODE_NIGHT_YES -> setDarkModeSystemBars(windowController)
}
@@ -83,66 +83,50 @@ object ThemeHelper {
@JvmStatic
fun saveTheme(activity: AppCompatActivity, themeValue: Int) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .putInt(CURRENT_THEME, themeValue)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .putInt(CURRENT_THEME, themeValue).apply()
activity.recreate()
}
@JvmStatic
fun deleteThemeKey(activity: AppCompatActivity) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .remove(CURRENT_THEME)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .remove(CURRENT_THEME).apply()
activity.recreate()
}
@JvmStatic
fun saveThemeMode(activity: AppCompatActivity, themeModeValue: Int) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .putInt(CURRENT_THEME_MODE, themeModeValue)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .putInt(CURRENT_THEME_MODE, themeModeValue).apply()
setThemeMode(activity)
}
@JvmStatic
fun deleteThemeModeKey(activity: AppCompatActivity) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .remove(CURRENT_THEME_MODE)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .remove(CURRENT_THEME_MODE).apply()
setThemeMode(activity)
}
@JvmStatic
fun saveBackgroundSetting(activity: AppCompatActivity, backgroundValue: Boolean) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .putBoolean(USE_BLACK_BACKGROUNDS, backgroundValue)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .putBoolean(USE_BLACK_BACKGROUNDS, backgroundValue).apply()
activity.recreate()
}
@JvmStatic
fun deleteBackgroundSetting(activity: AppCompatActivity) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .remove(USE_BLACK_BACKGROUNDS)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .remove(USE_BLACK_BACKGROUNDS).apply()
activity.recreate()
}
@JvmStatic
fun resetThemePreferences(activity: AppCompatActivity, applyImmediately: Boolean = false) {
- PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .edit()
- .remove(CURRENT_THEME)
- .remove(CURRENT_THEME_MODE)
- .remove(USE_BLACK_BACKGROUNDS)
- .apply()
+ PreferenceManager.getDefaultSharedPreferences(activity.applicationContext).edit()
+ .remove(CURRENT_THEME).remove(CURRENT_THEME_MODE).remove(USE_BLACK_BACKGROUNDS).apply()
activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
activity.delegate.applyDayNight()
if (applyImmediately) {
@@ -170,10 +154,7 @@ object ThemeHelper {
activity: AppCompatActivity, toolbar: MaterialToolbar, appBarLayout: AppBarLayout
) {
appBarLayout.addOnOffsetChangedListener { layout: AppBarLayout, verticalOffset: Int ->
- if (
- layout.totalScrollRange > 0 &&
- -verticalOffset >= layout.totalScrollRange / 2
- ) {
+ if (layout.totalScrollRange > 0 && -verticalOffset >= layout.totalScrollRange / 2) {
@ColorInt val color =
ElevationOverlayProvider(appBarLayout.context).compositeOverlay(
MaterialColors.getColor(appBarLayout, R.attr.colorSurface),
@@ -183,8 +164,7 @@ object ThemeHelper {
setStatusBarColor(activity, color)
} else {
@ColorInt val statusBarColor = ContextCompat.getColor(
- activity.applicationContext,
- android.R.color.transparent
+ activity.applicationContext, android.R.color.transparent
)
@ColorInt val appBarColor = MaterialColors.getColor(toolbar, R.attr.colorSurface)
toolbar.setBackgroundColor(appBarColor)
@@ -201,8 +181,7 @@ object ThemeHelper {
setStatusBarColor(activity, color)
} else {
@ColorInt val statusBarColor = ContextCompat.getColor(
- activity.applicationContext,
- android.R.color.transparent
+ activity.applicationContext, android.R.color.transparent
)
setStatusBarColor(activity, statusBarColor)
}