Android: Hide controller mappings button when controller type is None

Also removed the make_sure_continuous_scan_enabled message.
It doesn't make sense with the new UX.
This commit is contained in:
JosJuice 2023-02-27 22:04:42 +01:00
parent b827b155a0
commit 96deb2d897
10 changed files with 76 additions and 23 deletions

View File

@ -310,6 +310,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
mPresenter.onMenuTagAction(menuTag, value);
}
@Override
public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
{
return mPresenter.hasMenuTagActionForValue(menuTag, value);
}
@Override
public boolean onSupportNavigateUp()
{

View File

@ -153,21 +153,15 @@ public final class SettingsActivityPresenter
if (menuTag.isWiimoteMenu())
{
switch (value)
if (value == 1) // Emulated Wii Remote
{
case 1:
mView.showSettingsFragment(menuTag, null, true, mGameId);
break;
case 2:
mView.showToastMessage(mActivity.getString(R.string.make_sure_continuous_scan_enabled));
break;
}
}
if (menuTag.isWiimoteExtensionMenu())
{
if (value != 0) // None
if (value != 0) // Not disabled
{
Bundle bundle = new Bundle();
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value);
@ -175,4 +169,29 @@ public final class SettingsActivityPresenter
}
}
}
public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
{
if (menuTag.isSerialPort1Menu())
{
return (value != 0 && value != 255); // Not disabled or dummy
}
if (menuTag.isGCPadMenu())
{
return (value != 0); // Not disabled
}
if (menuTag.isWiimoteMenu())
{
return (value == 1); // Emulated Wii Remote
}
if (menuTag.isWiimoteExtensionMenu())
{
return (value != 0); // Not disabled
}
return false;
}
}

View File

@ -64,11 +64,20 @@ public interface SettingsActivityView
* Called by a containing Fragment to tell the containing Activity that the user wants to open the
* MenuTag associated with a setting.
*
* @param menuTag The MenuTag to open.
* @param value The current value of the associated setting.
* @param menuTag The MenuTag of the setting.
* @param value The current value of the setting.
*/
void onMenuTagAction(@NonNull MenuTag menuTag, int value);
/**
* Returns whether anything will happen when the user wants to open the MenuTag associated with a
* setting, given the current value of the setting.
*
* @param menuTag The MenuTag of the setting.
* @param value The current value of the setting.
*/
boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value);
/**
* Show loading dialog while loading the settings
*/

View File

@ -472,6 +472,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
mView.onMenuTagAction(menuTag, value);
}
public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
{
return mView.hasMenuTagActionForValue(menuTag, value);
}
@Override
public void onClick(DialogInterface dialog, int which)
{

View File

@ -231,6 +231,11 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
mActivity.onMenuTagAction(menuTag, value);
}
public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
{
return mActivity.hasMenuTagActionForValue(menuTag, value);
}
private void setInsets()
{
ViewCompat.setOnApplyWindowInsetsListener(mBinding.listSettings, (v, windowInsets) ->

View File

@ -76,8 +76,17 @@ public interface SettingsFragmentView
* Have the fragment tell the containing Activity that the user wants to open the MenuTag
* associated with a setting.
*
* @param menuTag The MenuTag to open.
* @param value The current value of the associated setting.
* @param menuTag The MenuTag of the setting.
* @param value The current value of the setting.
*/
void onMenuTagAction(@NonNull MenuTag menuTag, int value);
/**
* Returns whether anything will happen when the user wants to open the MenuTag associated with a
* setting, given the current value of the setting.
*
* @param menuTag The MenuTag of the setting.
* @param value The current value of the setting.
*/
boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value);
}

View File

@ -101,7 +101,8 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
getSelectedValue = setting::getSelectedValueIndex;
}
if (menuTag != null)
if (menuTag != null &&
adapter.hasMenuTagActionForValue(menuTag, getSelectedValue.apply(settings)))
{
mBinding.buttonMoreSettings.setVisibility(View.VISIBLE);

View File

@ -8,15 +8,13 @@
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:minHeight="72dp"
android:nextFocusLeft="@id/button_more_settings">
<TextView
android:id="@+id/text_setting_name"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="@dimen/spacing_large"
@ -24,11 +22,12 @@
android:layout_marginTop="@dimen/spacing_large"
android:textSize="16sp"
android:textAlignment="viewStart"
android:layout_toStartOf="@+id/button_more_settings"
tools:text="Setting Name" />
<TextView
android:id="@+id/text_setting_description"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignStart="@+id/text_setting_name"
@ -37,6 +36,7 @@
android:layout_marginEnd="@dimen/spacing_large"
android:layout_marginStart="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_small"
android:layout_toStartOf="@+id/button_more_settings"
android:textAlignment="viewStart"
tools:text="@string/overclock_enable_description" />

View File

@ -8,15 +8,13 @@
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:minHeight="72dp"
android:nextFocusRight="@id/button_more_settings">
<TextView
android:id="@+id/text_setting_name"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="@dimen/spacing_large"
@ -24,11 +22,12 @@
android:layout_marginTop="@dimen/spacing_large"
android:textSize="16sp"
android:textAlignment="viewStart"
android:layout_toStartOf="@+id/button_more_settings"
tools:text="Setting Name" />
<TextView
android:id="@+id/text_setting_description"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignStart="@+id/text_setting_name"
@ -37,6 +36,7 @@
android:layout_marginEnd="@dimen/spacing_large"
android:layout_marginStart="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_small"
android:layout_toStartOf="@+id/button_more_settings"
android:textAlignment="viewStart"
tools:text="@string/overclock_enable_description" />

View File

@ -683,7 +683,6 @@ It can efficiently compress both junk data and encrypted Wii data.
<string name="replug_gc_adapter">GameCube Adapter couldn\'t be opened. Please re-plug the device.</string>
<string name="disabled_gc_overlay_notice">GameCube Controller 1 is set to \"None\"</string>
<string name="ignore_warning_alert_messages">Ignore for this session</string>
<string name="make_sure_continuous_scan_enabled">Please make sure Continuous Scanning is enabled in Core Settings.</string>
<!-- UI CPU Core selection -->
<string name="jit_recompiler_x86">JIT Recompiler for x8664 (recommended)</string>