summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-09-18 18:53:01 +0200
committerJosJuice <josjuice@gmail.com>2020-11-20 22:17:00 +0100
commit064cde9774fbd0063a5de78f6fe4473b12ca596d (patch)
tree34a0ce89575ebd0b0dda3eb5dcbb5342be36d233 /Source/Android/app/src/main/java
parent33f15f22e21a808314d19f41290a73d2fb014ea7 (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')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/FilePickerViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RumbleBindingViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/RunRunnableViewHolder.java11
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java43
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SubmenuViewHolder.java8
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;
+ }
}