Android: Remove CheckBoxSettingViewHolder's log setting name hack

This commit is contained in:
JosJuice 2021-05-09 16:56:33 +02:00
parent a8f48feddb
commit c5491e8205
5 changed files with 36 additions and 36 deletions

View File

@ -17,6 +17,13 @@ public class CheckBoxSetting extends SettingsItem
mSetting = setting;
}
public CheckBoxSetting(AbstractBooleanSetting setting, CharSequence title,
CharSequence description)
{
super(title, description);
mSetting = setting;
}
public boolean isChecked(Settings settings)
{
return mSetting.getBoolean(settings);

View File

@ -9,11 +9,10 @@ public class LogCheckBoxSetting extends CheckBoxSetting
{
String mKey;
public LogCheckBoxSetting(Context context, String key, int titleId, int descriptionId)
public LogCheckBoxSetting(String key, CharSequence title, CharSequence description)
{
super(context,
new AdHocBooleanSetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, key, false),
titleId, descriptionId);
super(new AdHocBooleanSetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, key, false),
title, description);
mKey = key;
}

View File

@ -176,6 +176,13 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
mView.onSettingChanged();
}
public void notifyAllSettingsChanged()
{
notifyItemRangeChanged(0, getItemCount());
mView.onSettingChanged();
}
public void onBooleanClick(CheckBoxSetting item, int position, boolean checked)
{
item.setChecked(getSettings(), checked);
@ -334,20 +341,6 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
mClickedItem = null;
}
public void setAllLogTypes(boolean value)
{
Settings settings = mView.getSettings();
for (Map.Entry<String, String> entry : SettingsFragmentPresenter.LOG_TYPE_NAMES.entrySet())
{
new AdHocBooleanSetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, entry.getKey(),
false).setBoolean(settings, value);
}
notifyItemRangeChanged(0, getItemCount());
mView.onSettingChanged();
}
public static void clearLog()
{
// Don't delete the log in case it is being monitored by another app.

View File

@ -10,6 +10,7 @@ import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.model.AbstractIntSetting;
import org.dolphinemu.dolphinemu.features.settings.model.AbstractStringSetting;
import org.dolphinemu.dolphinemu.features.settings.model.AdHocBooleanSetting;
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
import org.dolphinemu.dolphinemu.features.settings.model.FloatSetting;
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting;
@ -50,7 +51,7 @@ public final class SettingsFragmentPresenter
private final SettingsFragmentView mView;
private final Context mContext;
public static final LinkedHashMap<String, String> LOG_TYPE_NAMES =
private static final LinkedHashMap<String, String> LOG_TYPE_NAMES =
NativeLibrary.GetLogTypeNames();
public static final String ARG_CONTROLLER_TYPE = "controller_type";
@ -748,19 +749,16 @@ public final class SettingsFragmentPresenter
sl.add(new SingleChoiceSetting(mContext, IntSetting.LOGGER_VERBOSITY, R.string.log_verbosity, 0,
getLogVerbosityEntries(), getLogVerbosityValues()));
sl.add(new RunRunnable(mContext, R.string.log_enable_all, 0,
R.string.log_enable_all_confirmation, 0,
() -> mView.getAdapter().setAllLogTypes(true)));
R.string.log_enable_all_confirmation, 0, () -> setAllLogTypes(true)));
sl.add(new RunRunnable(mContext, R.string.log_disable_all, 0,
R.string.log_disable_all_confirmation, 0,
() -> mView.getAdapter().setAllLogTypes(false)));
R.string.log_disable_all_confirmation, 0, () -> setAllLogTypes(false)));
sl.add(new RunRunnable(mContext, R.string.log_clear, 0, R.string.log_clear_confirmation, 0,
SettingsAdapter::clearLog));
sl.add(new HeaderSetting(mContext, R.string.log_types, 0));
for (Map.Entry<String, String> entry : LOG_TYPE_NAMES.entrySet())
{
// TitleID is handled by special case in CheckBoxSettingViewHolder.
sl.add(new LogCheckBoxSetting(mContext, entry.getKey(), 0, 0));
sl.add(new LogCheckBoxSetting(entry.getKey(), entry.getValue(), ""));
}
}
@ -1341,4 +1339,17 @@ public final class SettingsFragmentPresenter
return R.array.logVerbosityValuesMaxLevelInfo;
}
}
public void setAllLogTypes(boolean value)
{
Settings settings = mView.getSettings();
for (Map.Entry<String, String> entry : LOG_TYPE_NAMES.entrySet())
{
new AdHocBooleanSetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, entry.getKey(),
false).setBoolean(settings, value);
}
mView.getAdapter().notifyAllSettingsChanged();
}
}

View File

@ -41,17 +41,7 @@ public final class CheckBoxSettingViewHolder extends SettingViewHolder
{
mItem = (CheckBoxSetting) item;
// Special case for LogTypes retrieved via JNI since those aren't string references.
if (TextUtils.isEmpty(item.getName()) && item instanceof LogCheckBoxSetting)
{
String key = ((LogCheckBoxSetting) item).getKey();
mTextSettingName.setText(SettingsFragmentPresenter.LOG_TYPE_NAMES.get(key));
}
else
{
mTextSettingName.setText(item.getName());
}
mTextSettingName.setText(item.getName());
mTextSettingDescription.setText(item.getDescription());
mCheckbox.setChecked(mItem.isChecked(getAdapter().getSettings()));