[android] New layers icons

Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
Andrei Shkrob
2025-08-21 19:39:09 +02:00
committed by x7z4w
parent e0351b26ba
commit f514606ebe
17 changed files with 338 additions and 216 deletions

View File

@@ -13,9 +13,7 @@ import app.organicmaps.util.ThemeUtils;
public class LayerBottomSheetItem
{
@DrawableRes
private final int mEnabledStateDrawableResId;
@DrawableRes
private final int mDisabledStateDrawableResId;
private final int mDrawableResId;
@StringRes
private final int mTitleResId;
@NonNull
@@ -23,12 +21,10 @@ public class LayerBottomSheetItem
@NonNull
private final OnItemClickListener<LayerBottomSheetItem> mItemClickListener;
LayerBottomSheetItem(@DrawableRes int enabledStateDrawableResId, @DrawableRes int disabledStateDrawableResId,
@StringRes int titleResId, @NonNull Mode mode,
LayerBottomSheetItem(@DrawableRes int drawableResId, @StringRes int titleResId, @NonNull Mode mode,
@NonNull OnItemClickListener<LayerBottomSheetItem> itemClickListener)
{
mEnabledStateDrawableResId = enabledStateDrawableResId;
mDisabledStateDrawableResId = disabledStateDrawableResId;
mDrawableResId = drawableResId;
mTitleResId = titleResId;
mMode = mode;
mItemClickListener = itemClickListener;
@@ -37,35 +33,32 @@ public class LayerBottomSheetItem
public static LayerBottomSheetItem create(@NonNull Context mContext, Mode mode,
@NonNull OnItemClickListener<LayerBottomSheetItem> layerItemClickListener)
{
int disabledResource = 0;
int enabledResource = 0;
@AttrRes
int drawableRes = 0;
@StringRes
int buttonTextResource = R.string.layers_title;
switch (mode)
{
case OUTDOORS:
disabledResource = R.attr.outdoorsMenuDisabled;
enabledResource = R.attr.outdoorsMenuEnabled;
drawableRes = R.attr.outdoorsMenuIcon;
buttonTextResource = R.string.button_layer_outdoor;
break;
case SUBWAY:
disabledResource = R.attr.subwayMenuDisabled;
enabledResource = R.attr.subwayMenuEnabled;
buttonTextResource = R.string.subway;
drawableRes = R.attr.subwayMenuIcon;
buttonTextResource = R.string.button_layer_subway;
break;
case ISOLINES:
disabledResource = R.attr.isoLinesMenuDisabled;
enabledResource = R.attr.isoLinesMenuEnabled;
drawableRes = R.attr.isolinesMenuIcon;
buttonTextResource = R.string.button_layer_isolines;
break;
case TRAFFIC:
disabledResource = R.attr.trafficMenuDisabled;
enabledResource = R.attr.trafficMenuEnabled;
drawableRes = R.attr.trafficMenuIcon;
buttonTextResource = R.string.button_layer_traffic;
break;
}
int disabled = ThemeUtils.getResource(mContext, disabledResource);
int enabled = ThemeUtils.getResource(mContext, enabledResource);
return new LayerBottomSheetItem(enabled, disabled, buttonTextResource, mode, layerItemClickListener);
@DrawableRes
final int drawableResId = ThemeUtils.getResource(mContext, drawableRes);
return new LayerBottomSheetItem(drawableResId, buttonTextResource, mode, layerItemClickListener);
}
@NonNull
@@ -75,15 +68,9 @@ public class LayerBottomSheetItem
}
@DrawableRes
public int getEnabledStateDrawable()
public int getDrawable()
{
return mEnabledStateDrawableResId;
}
@DrawableRes
public int getDisabledStateDrawable()
{
return mDisabledStateDrawableResId;
return mDrawableResId;
}
@StringRes

View File

@@ -45,7 +45,8 @@ public class LayersAdapter extends RecyclerView.Adapter<LayerHolder>
holder.mTitle.setText(item.getTitle());
boolean isNewLayer = SharedPropertiesUtils.shouldShowNewMarkerForLayerMode(item.getMode());
UiUtils.showIf(isNewLayer, holder.mNewMarker);
holder.mButton.setImageResource(isEnabled ? item.getEnabledStateDrawable() : item.getDisabledStateDrawable());
holder.mButton.setBackgroundResource(item.getDrawable());
holder.mButton.setActivated(isEnabled);
holder.mListener = item::onClick;
}