diff options
| author | JosJuice <josjuice@gmail.com> | 2020-09-18 18:53:01 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-11-20 22:17:00 +0100 |
| commit | 064cde9774fbd0063a5de78f6fe4473b12ca596d (patch) | |
| tree | 34a0ce89575ebd0b0dda3eb5dcbb5342be36d233 /Source/Android/app/src/main/java | |
| parent | 33f15f22e21a808314d19f41290a73d2fb014ea7 (diff) | |
Android: Long press a setting to reset it
This is particularly important for game INIs, where a setting being
unset is not the same as it being set to the default value.
Diffstat (limited to 'Source/Android/app/src/main/java')
13 files changed, 134 insertions, 4 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java index ebc68f6948..5a9e5321e3 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java @@ -77,4 +77,14 @@ public abstract class SettingsItem AbstractSetting setting = getSetting(); return setting != null && setting.isRuntimeEditable(); } + + public boolean hasSetting() + { + return getSetting() != null; + } + + public void clear(Settings settings) + { + getSetting().delete(settings); + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java index 8873a668fb..4bd9753791 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java @@ -160,6 +160,14 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde notifyDataSetChanged(); } + public void clearSetting(SettingsItem item, int position) + { + item.clear(getSettings()); + notifyItemChanged(position); + + mView.onSettingChanged(); + } + public void onBooleanClick(CheckBoxSetting item, int position, boolean checked) { item.setChecked(getSettings(), checked); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index 9325ed6743..1e8577f314 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -225,6 +225,7 @@ public final class SettingsFragmentPresenter sl.add(new SubmenuSetting(R.string.advanced_submenu, MenuTag.CONFIG_ADVANCED)); sl.add(new SubmenuSetting(R.string.log_submenu, MenuTag.CONFIG_LOG)); sl.add(new SubmenuSetting(R.string.debug_submenu, MenuTag.DEBUG)); + sl.add(new HeaderSetting(R.string.setting_clear_info, 0)); } private void addGeneralSettings(ArrayList<SettingsItem> sl) @@ -493,6 +494,7 @@ public final class SettingsFragmentPresenter sl.add(new HeaderSetting(R.string.graphics_enhancements_and_hacks, 0)); sl.add(new SubmenuSetting(R.string.enhancements_submenu, MenuTag.ENHANCEMENTS)); sl.add(new SubmenuSetting(R.string.hacks_submenu, MenuTag.HACKS)); + sl.add(new HeaderSetting(R.string.setting_clear_info, 0)); } private void addEnhanceSettings(ArrayList<SettingsItem> sl) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java index 07206a04fa..5a505ea9df 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java @@ -4,6 +4,8 @@ import android.view.View; import android.widget.CheckBox; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting; import org.dolphinemu.dolphinemu.features.settings.model.view.LogCheckBoxSetting; @@ -78,4 +80,10 @@ public final class CheckBoxSettingViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/FilePickerViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/FilePickerViewHolder.java index 39b17d587a..790ce1acf9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/FilePickerViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/FilePickerViewHolder.java @@ -4,6 +4,8 @@ import android.text.TextUtils; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.FilePicker; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; @@ -82,4 +84,10 @@ public final class FilePickerViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java index 6ece671bf4..2661379e70 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java @@ -3,6 +3,8 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter; @@ -34,4 +36,10 @@ public final class HeaderViewHolder extends SettingViewHolder { // no-op } + + @Nullable @Override + protected SettingsItem getItem() + { + return null; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java index 7dda7b3630..8e65949112 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java @@ -6,6 +6,8 @@ import android.preference.PreferenceManager; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.InputBindingSetting; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; @@ -61,4 +63,10 @@ public final class InputBindingSettingViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RumbleBindingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RumbleBindingViewHolder.java index 3968e0c078..dc77ccf0c5 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RumbleBindingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RumbleBindingViewHolder.java @@ -6,6 +6,8 @@ import android.preference.PreferenceManager; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.RumbleBindingSetting; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; @@ -61,4 +63,10 @@ public class RumbleBindingViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RunRunnableViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RunRunnableViewHolder.java index 1fd87824df..b80f218e6a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RunRunnableViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RunRunnableViewHolder.java @@ -5,6 +5,7 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import org.dolphinemu.dolphinemu.R; @@ -56,8 +57,8 @@ public final class RunRunnableViewHolder extends SettingViewHolder if (alertTextID > 0) { AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase) - .setTitle(mContext.getString(mItem.getNameId())) - .setMessage(mContext.getString(alertTextID)); + .setTitle(mItem.getNameId()) + .setMessage(alertTextID); builder .setPositiveButton(R.string.ok, (dialog, whichButton) -> @@ -75,6 +76,12 @@ public final class RunRunnableViewHolder extends SettingViewHolder } } + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } + private void runRunnable() { mItem.getRunnable().run(); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java index c23a3a270b..bd1cf09f2c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java @@ -1,12 +1,14 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder; - +import android.content.Context; import android.graphics.Paint; import android.graphics.Typeface; import android.view.View; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.recyclerview.widget.RecyclerView; import org.dolphinemu.dolphinemu.DolphinApplication; @@ -15,7 +17,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter; public abstract class SettingViewHolder extends RecyclerView.ViewHolder - implements View.OnClickListener + implements View.OnClickListener, View.OnLongClickListener { private SettingsAdapter mAdapter; @@ -26,6 +28,7 @@ public abstract class SettingViewHolder extends RecyclerView.ViewHolder mAdapter = adapter; itemView.setOnClickListener(this); + itemView.setOnLongClickListener(this); findViews(itemView); } @@ -72,4 +75,40 @@ public abstract class SettingViewHolder extends RecyclerView.ViewHolder * @param clicked The view that was clicked on. */ public abstract void onClick(View clicked); + + @Nullable + protected abstract SettingsItem getItem(); + + public boolean onLongClick(View clicked) + { + SettingsItem item = getItem(); + + if (item == null || !item.hasSetting()) + return false; + + if (!item.isEditable()) + { + showNotRuntimeEditableError(); + return true; + } + + Context context = clicked.getContext(); + + AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.DolphinDialogBase) + .setMessage(R.string.setting_clear_confirm); + + builder + .setPositiveButton(R.string.ok, (dialog, whichButton) -> + { + getAdapter().clearSetting(item, getAdapterPosition()); + bind(item); + Toast.makeText(context, R.string.setting_cleared, Toast.LENGTH_SHORT).show(); + dialog.dismiss(); + }) + .setNegativeButton(R.string.cancel, (dialog, whichButton) -> dialog.dismiss()); + + builder.show(); + + return true; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java index a8f869cba9..c359d4d6e1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java @@ -4,6 +4,8 @@ import android.content.res.Resources; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.model.view.SingleChoiceSetting; @@ -110,4 +112,10 @@ public final class SingleChoiceViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java index 6a7d9a0fa3..64534fe957 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java @@ -4,6 +4,8 @@ import android.content.Context; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.model.view.SliderSetting; @@ -66,5 +68,11 @@ public final class SliderViewHolder extends SettingViewHolder setStyle(mTextSettingName, mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SubmenuViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SubmenuViewHolder.java index 0560f3818f..33aa4bfb33 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SubmenuViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SubmenuViewHolder.java @@ -3,6 +3,8 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting; @@ -38,4 +40,10 @@ public final class SubmenuViewHolder extends SettingViewHolder { getAdapter().onSubmenuClick(mItem); } + + @Nullable @Override + protected SettingsItem getItem() + { + return mItem; + } } |
