Merge branch 'master' into color-pic
This commit is contained in:
commit
0b8847206a
89 changed files with 660 additions and 411 deletions
12
OsmAnd/res/layout/preference_colors_card.xml
Normal file
12
OsmAnd/res/layout/preference_colors_card.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<net.osmand.plus.widgets.FlowLayout
|
||||
android:id="@+id/color_items"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp" />
|
||||
</LinearLayout>
|
|
@ -21,12 +21,12 @@
|
|||
|
||||
<PreferenceCategory
|
||||
android:key="select_color"
|
||||
android:layout="@layout/preference_category_with_descr"
|
||||
android:layout="@layout/preference_category_with_right_text"
|
||||
android:title="@string/select_color" />
|
||||
|
||||
<Preference
|
||||
android:key="color_items"
|
||||
android:layout="@layout/preference_color_select"
|
||||
android:layout="@layout/preference_colors_card"
|
||||
android:title="@string/select_color"
|
||||
android:selectable="false"/>
|
||||
|
||||
|
|
|
@ -336,6 +336,43 @@ public class AndroidUtils {
|
|||
);
|
||||
}
|
||||
|
||||
public static ColorStateList createCheckedColorIntStateList(@ColorInt int normal, @ColorInt int checked) {
|
||||
return createCheckedColorIntStateList(false, normal, checked, 0, 0);
|
||||
}
|
||||
|
||||
public static ColorStateList createCheckedColorIntStateList(boolean night,
|
||||
@ColorInt int lightNormal, @ColorInt int lightChecked,
|
||||
@ColorInt int darkNormal, @ColorInt int darkChecked) {
|
||||
return createColorIntStateList(night, android.R.attr.state_checked,
|
||||
lightNormal, lightChecked, darkNormal, darkChecked);
|
||||
}
|
||||
|
||||
public static ColorStateList createEnabledColorIntStateList(@ColorInt int normal, @ColorInt int pressed) {
|
||||
return createEnabledColorIntStateList(false, normal, pressed, 0, 0);
|
||||
}
|
||||
|
||||
public static ColorStateList createEnabledColorIntStateList(boolean night,
|
||||
@ColorInt int lightNormal, @ColorInt int lightPressed,
|
||||
@ColorInt int darkNormal, @ColorInt int darkPressed) {
|
||||
return createColorIntStateList(night, android.R.attr.state_enabled,
|
||||
lightNormal, lightPressed, darkNormal, darkPressed);
|
||||
}
|
||||
|
||||
private static ColorStateList createColorIntStateList(boolean night, int state,
|
||||
@ColorInt int lightNormal, @ColorInt int lightState,
|
||||
@ColorInt int darkNormal, @ColorInt int darkState) {
|
||||
return new ColorStateList(
|
||||
new int[][]{
|
||||
new int[]{state},
|
||||
new int[]{}
|
||||
},
|
||||
new int[]{
|
||||
night ? darkState : lightState,
|
||||
night ? darkNormal : lightNormal
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public static StateListDrawable createCheckedStateListDrawable(Drawable normal, Drawable checked) {
|
||||
return createStateListDrawable(normal, checked, android.R.attr.state_checked);
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ public class ConnectedApp implements Comparable<ConnectedApp> {
|
|||
CompoundButton btn = view.findViewById(R.id.toggle_item);
|
||||
if (btn != null && btn.getVisibility() == View.VISIBLE) {
|
||||
btn.setChecked(!btn.isChecked());
|
||||
menuAdapter.getItem(position).setColorRes(btn.isChecked() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
menuAdapter.getItem(position).setColor(app, btn.isChecked() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
return false;
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ public class ConnectedApp implements Comparable<ConnectedApp> {
|
|||
if (layersPref.set(isChecked)) {
|
||||
ContextMenuItem item = adapter.getItem(position);
|
||||
if (item != null) {
|
||||
item.setColorRes(isChecked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, isChecked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setSelected(isChecked);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ public class ConnectedApp implements Comparable<ConnectedApp> {
|
|||
.setListener(listener)
|
||||
.setSelected(layersEnabled)
|
||||
.setIcon(R.drawable.ic_extension_dark)
|
||||
.setColor(layersEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, layersEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.createItem());
|
||||
}
|
||||
|
||||
|
|
|
@ -249,8 +249,7 @@ public class ContextMenuAdapter {
|
|||
final ContextMenuItem item = getItem(position);
|
||||
int layoutId = item.getLayout();
|
||||
layoutId = layoutId != ContextMenuItem.INVALID_ID ? layoutId : DEFAULT_LAYOUT_ID;
|
||||
int currentModeColorRes = app.getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
int currentModeColor = ContextCompat.getColor(app, currentModeColorRes);
|
||||
int currentModeColor = app.getSettings().getApplicationMode().getProfileColor(nightMode);
|
||||
if (layoutId == R.layout.mode_toggles) {
|
||||
final Set<ApplicationMode> selected = new LinkedHashSet<>();
|
||||
return AppModeDialog.prepareAppModeDrawerView((Activity) getContext(),
|
||||
|
@ -278,15 +277,13 @@ public class ContextMenuAdapter {
|
|||
}
|
||||
if (layoutId == R.layout.main_menu_drawer_btn_switch_profile ||
|
||||
layoutId == R.layout.main_menu_drawer_btn_configure_profile) {
|
||||
int colorResId = item.getColorRes();
|
||||
int colorNoAlpha = ContextCompat.getColor(app, colorResId);
|
||||
|
||||
int colorNoAlpha = item.getColor();
|
||||
TextView title = convertView.findViewById(R.id.title);
|
||||
title.setText(item.getTitle());
|
||||
|
||||
if (layoutId == R.layout.main_menu_drawer_btn_switch_profile) {
|
||||
ImageView icon = convertView.findViewById(R.id.icon);
|
||||
icon.setImageDrawable(mIconsCache.getIcon(item.getIcon(), colorResId));
|
||||
icon.setImageDrawable(mIconsCache.getPaintedIcon(item.getIcon(), colorNoAlpha));
|
||||
ImageView icArrow = convertView.findViewById(R.id.ic_expand_list);
|
||||
icArrow.setImageDrawable(mIconsCache.getIcon(item.getSecondaryIcon()));
|
||||
TextView desc = convertView.findViewById(R.id.description);
|
||||
|
@ -306,11 +303,8 @@ public class ContextMenuAdapter {
|
|||
return convertView;
|
||||
}
|
||||
if (layoutId == R.layout.profile_list_item) {
|
||||
|
||||
int tag = item.getTag();
|
||||
|
||||
int colorResId = item.getColorRes();
|
||||
int colorNoAlpha = ContextCompat.getColor(app, colorResId);
|
||||
int colorNoAlpha = item.getColor();
|
||||
TextView title = convertView.findViewById(R.id.title);
|
||||
TextView desc = convertView.findViewById(R.id.description);
|
||||
ImageView icon = convertView.findViewById(R.id.icon);
|
||||
|
@ -331,7 +325,7 @@ public class ContextMenuAdapter {
|
|||
AndroidUiHelper.updateVisibility(icon, true);
|
||||
AndroidUiHelper.updateVisibility(desc, true);
|
||||
AndroidUtils.setTextPrimaryColor(app, title, nightMode);
|
||||
icon.setImageDrawable(mIconsCache.getIcon(item.getIcon(), colorResId));
|
||||
icon.setImageDrawable(mIconsCache.getPaintedIcon(item.getIcon(), colorNoAlpha));
|
||||
desc.setText(item.getDescription());
|
||||
boolean selectedMode = tag == PROFILES_CHOSEN_PROFILE_TAG;
|
||||
if (selectedMode) {
|
||||
|
@ -419,17 +413,18 @@ public class ContextMenuAdapter {
|
|||
}
|
||||
} else {
|
||||
if (item.getIcon() != ContextMenuItem.INVALID_ID) {
|
||||
int colorRes = item.getColorRes();
|
||||
if (colorRes == ContextMenuItem.INVALID_ID) {
|
||||
if (!item.shouldSkipPainting()) {
|
||||
colorRes = lightTheme ? R.color.icon_color_default_light : R.color.icon_color_default_dark;
|
||||
} else {
|
||||
colorRes = 0;
|
||||
}
|
||||
Integer color = item.getColor();
|
||||
Drawable drawable;
|
||||
if (color == null) {
|
||||
int colorRes = lightTheme ? R.color.icon_color_default_light : R.color.icon_color_default_dark;
|
||||
colorRes = item.shouldSkipPainting() ? 0 : colorRes;
|
||||
drawable = mIconsCache.getIcon(item.getIcon(), colorRes);
|
||||
} else if (profileDependent) {
|
||||
colorRes = currentModeColorRes;
|
||||
drawable = mIconsCache.getPaintedIcon(item.getIcon(), currentModeColor);
|
||||
} else {
|
||||
drawable = mIconsCache.getPaintedIcon(item.getIcon(), color);
|
||||
}
|
||||
final Drawable drawable = mIconsCache.getIcon(item.getIcon(), colorRes);
|
||||
|
||||
((AppCompatImageView) convertView.findViewById(R.id.icon)).setImageDrawable(drawable);
|
||||
convertView.findViewById(R.id.icon).setVisibility(View.VISIBLE);
|
||||
} else if (convertView.findViewById(R.id.icon) != null) {
|
||||
|
|
|
@ -19,8 +19,8 @@ public class ContextMenuItem {
|
|||
private String title;
|
||||
@DrawableRes
|
||||
private int mIcon;
|
||||
@ColorRes
|
||||
private int colorRes;
|
||||
@ColorInt
|
||||
private Integer color;
|
||||
@DrawableRes
|
||||
private int secondaryIcon;
|
||||
private Boolean selected;
|
||||
|
@ -48,7 +48,7 @@ public class ContextMenuItem {
|
|||
private ContextMenuItem(@StringRes int titleId,
|
||||
String title,
|
||||
@DrawableRes int icon,
|
||||
@ColorRes int colorRes,
|
||||
@ColorInt Integer color,
|
||||
@DrawableRes int secondaryIcon,
|
||||
Boolean selected,
|
||||
int progress,
|
||||
|
@ -72,7 +72,7 @@ public class ContextMenuItem {
|
|||
this.titleId = titleId;
|
||||
this.title = title;
|
||||
this.mIcon = icon;
|
||||
this.colorRes = colorRes;
|
||||
this.color = color;
|
||||
this.secondaryIcon = secondaryIcon;
|
||||
this.selected = selected;
|
||||
this.progress = progress;
|
||||
|
@ -109,23 +109,17 @@ public class ContextMenuItem {
|
|||
return mIcon;
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
public int getColorRes() {
|
||||
return colorRes;
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
public int getThemedColorRes(Context context) {
|
||||
if (skipPaintingWithoutColor || getColorRes() != INVALID_ID) {
|
||||
return getColorRes();
|
||||
} else {
|
||||
return UiUtilities.getDefaultColorRes(context);
|
||||
}
|
||||
@ColorInt
|
||||
public Integer getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
@ColorInt
|
||||
public int getThemedColor(Context context) {
|
||||
return ContextCompat.getColor(context, getThemedColorRes(context));
|
||||
if (skipPaintingWithoutColor || color != null) {
|
||||
return color;
|
||||
}
|
||||
return ContextCompat.getColor(context, UiUtilities.getDefaultColorRes(context));
|
||||
}
|
||||
|
||||
@DrawableRes
|
||||
|
@ -212,8 +206,10 @@ public class ContextMenuItem {
|
|||
this.secondaryIcon = secondaryIcon;
|
||||
}
|
||||
|
||||
public void setColorRes(int colorRes) {
|
||||
this.colorRes = colorRes;
|
||||
public void setColor(Context context, @ColorRes int colorRes) {
|
||||
if (colorRes != INVALID_ID) {
|
||||
this.color = ContextCompat.getColor(context, colorRes);
|
||||
}
|
||||
}
|
||||
|
||||
public void setSelected(boolean selected) {
|
||||
|
@ -268,8 +264,8 @@ public class ContextMenuItem {
|
|||
private String mTitle;
|
||||
@DrawableRes
|
||||
private int mIcon = INVALID_ID;
|
||||
@ColorRes
|
||||
private int mColorRes = INVALID_ID;
|
||||
@ColorInt
|
||||
private Integer mColor = null;
|
||||
@DrawableRes
|
||||
private int mSecondaryIcon = INVALID_ID;
|
||||
private Boolean mSelected = null;
|
||||
|
@ -307,8 +303,15 @@ public class ContextMenuItem {
|
|||
return this;
|
||||
}
|
||||
|
||||
public ItemBuilder setColor(@ColorRes int colorRes) {
|
||||
mColorRes = colorRes;
|
||||
public ItemBuilder setColor(@ColorInt Integer color) {
|
||||
mColor = color;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemBuilder setColor(Context context, @ColorRes int colorRes) {
|
||||
if (colorRes != INVALID_ID) {
|
||||
mColor = ContextCompat.getColor(context, colorRes);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -422,7 +425,7 @@ public class ContextMenuItem {
|
|||
}
|
||||
|
||||
public ContextMenuItem createItem() {
|
||||
ContextMenuItem item = new ContextMenuItem(mTitleId, mTitle, mIcon, mColorRes, mSecondaryIcon,
|
||||
ContextMenuItem item = new ContextMenuItem(mTitleId, mTitle, mIcon, mColor, mSecondaryIcon,
|
||||
mSelected, mProgress, mLayout, mLoading, mIsCategory, mIsClickable, mSkipPaintingWithoutColor,
|
||||
mOrder, mDescription, mOnUpdateCallback, mItemClickListener, mIntegerListener, mProgressListener,
|
||||
mItemDeleteAction, mHideDivider, mHideCompoundButton, mMinHeight, mTag, mId);
|
||||
|
|
|
@ -59,7 +59,7 @@ public class OsmAndLocationSimulation {
|
|||
boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
|
||||
int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
|
||||
ApplicationMode appMode = app.getSettings().getApplicationMode();
|
||||
int selectedModeColor = ContextCompat.getColor(app, appMode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = appMode.getProfileColor(nightMode);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ma, themeRes));
|
||||
builder.setTitle(R.string.animate_route);
|
||||
|
||||
|
|
|
@ -553,7 +553,7 @@ public class UiUtilities {
|
|||
switch (type) {
|
||||
case PROFILE_DEPENDENT:
|
||||
ApplicationMode appMode = app.getSettings().getApplicationMode();
|
||||
activeColor = ContextCompat.getColor(app, appMode.getIconColorInfo().getColor(nightMode));
|
||||
activeColor = appMode.getProfileColor(nightMode);
|
||||
break;
|
||||
case TOOLBAR:
|
||||
activeColor = Color.WHITE;
|
||||
|
|
|
@ -753,7 +753,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
|
||||
optionsMenuHelper.addItem(new ItemBuilder().setLayout(R.layout.profile_list_item)
|
||||
.setIcon(appMode.getIconRes())
|
||||
.setColor(appMode.getIconColorInfo().getColor(nightMode))
|
||||
.setColor(appMode.getProfileColor(nightMode))
|
||||
.setTag(tag)
|
||||
.setTitle(appMode.toHumanString())
|
||||
.setDescription(modeDescription)
|
||||
|
@ -770,7 +770,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
|
||||
int activeColorPrimaryResId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
|
||||
optionsMenuHelper.addItem(new ItemBuilder().setLayout(R.layout.profile_list_item)
|
||||
.setColor(activeColorPrimaryResId)
|
||||
.setColor(app, activeColorPrimaryResId)
|
||||
.setTag(PROFILES_CONTROL_BUTTON_TAG)
|
||||
.setTitle(getString(R.string.shared_string_manage))
|
||||
.setListener(new ItemClickListener() {
|
||||
|
@ -1083,7 +1083,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
.setId(DRAWER_SWITCH_PROFILE_ID)
|
||||
.setIcon(currentMode.getIconRes())
|
||||
.setSecondaryIcon(icArrowResId)
|
||||
.setColor(currentMode.getIconColorInfo().getColor(nightMode))
|
||||
.setColor(currentMode.getProfileColor(nightMode))
|
||||
.setTitle(currentMode.toHumanString())
|
||||
.setDescription(modeDescription)
|
||||
.setListener(new ItemClickListener() {
|
||||
|
@ -1097,7 +1097,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
.createItem());
|
||||
optionsMenuHelper.addItem(new ItemBuilder().setLayout(R.layout.main_menu_drawer_btn_configure_profile)
|
||||
.setId(DRAWER_CONFIGURE_PROFILE_ID)
|
||||
.setColor(currentMode.getIconColorInfo().getColor(nightMode))
|
||||
.setColor(currentMode.getProfileColor(nightMode))
|
||||
.setTitle(getString(R.string.configure_profile))
|
||||
.setListener(new ItemClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -437,7 +437,7 @@ public class MapActivityLayers {
|
|||
} else {
|
||||
builder.setIcon(R.drawable.mx_user_defined);
|
||||
}
|
||||
builder.setColor(ContextMenuItem.INVALID_ID);
|
||||
builder.setColor(activity, ContextMenuItem.INVALID_ID);
|
||||
builder.setSkipPaintingWithoutColor(true);
|
||||
adapter.addItem(builder.createItem());
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ public class MapActivityLayers {
|
|||
OsmandApplication app = getApplication();
|
||||
boolean nightMode = isNightMode(app);
|
||||
int themeRes = getThemeRes(app);
|
||||
int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = settings.getApplicationMode().getProfileColor(nightMode);
|
||||
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
|
||||
items, nightMode, selectedItem, app, selectedModeColor, themeRes, new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -120,13 +120,13 @@ public class AppModeDialog {
|
|||
final View selection = tb.findViewById(R.id.selection);
|
||||
ImageView iv = (ImageView) tb.findViewById(R.id.app_mode_icon);
|
||||
if (checked) {
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode)));
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode)));
|
||||
iv.setContentDescription(String.format("%s %s", mode.toHumanString(), ctx.getString(R.string.item_checked)));
|
||||
selection.setBackgroundResource(mode.getIconColorInfo().getColor(nightMode));
|
||||
selection.setBackgroundColor(mode.getProfileColor(nightMode));
|
||||
selection.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
if (useMapTheme) {
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode)));
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode)));
|
||||
iv.setBackgroundResource(AndroidUtils.resolveAttribute(themedCtx, android.R.attr.selectableItemBackground));
|
||||
} else {
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getThemedIcon(mode.getIconRes()));
|
||||
|
@ -171,7 +171,7 @@ public class AppModeDialog {
|
|||
final boolean checked = selected.contains(mode);
|
||||
ImageView iv = (ImageView) tb.findViewById(R.id.app_mode_icon);
|
||||
ImageView selection = tb.findViewById(R.id.selection);
|
||||
Drawable drawable = ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode));
|
||||
Drawable drawable = ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode));
|
||||
if (checked) {
|
||||
iv.setImageDrawable(drawable);
|
||||
iv.setContentDescription(String.format("%s %s", mode.toHumanString(), ctx.getString(R.string.item_checked)));
|
||||
|
@ -184,7 +184,7 @@ public class AppModeDialog {
|
|||
} else {
|
||||
if (useMapTheme) {
|
||||
if (Build.VERSION.SDK_INT >= 21) {
|
||||
Drawable active = ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode));
|
||||
Drawable active = ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode));
|
||||
drawable = AndroidUtils.createPressedStateListDrawable(drawable, active);
|
||||
}
|
||||
iv.setImageDrawable(drawable);
|
||||
|
@ -195,7 +195,7 @@ public class AppModeDialog {
|
|||
AndroidUtils.setBackground(ctx, selection, nightMode, R.drawable.btn_border_pressed_trans_light, R.drawable.btn_border_pressed_trans_light);
|
||||
}
|
||||
} else {
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode)));
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode)));
|
||||
}
|
||||
iv.setContentDescription(String.format("%s %s", mode.toHumanString(), ctx.getString(R.string.item_unchecked)));
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ public class AppModeDialog {
|
|||
int metricsY = (int) ctx.getResources().getDimension(R.dimen.route_info_modes_height);
|
||||
View tb = layoutInflater.inflate(layoutId, null);
|
||||
ImageView iv = (ImageView) tb.findViewById(R.id.app_mode_icon);
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(isNightMode(ctx, useMapTheme))));
|
||||
iv.setImageDrawable(ctx.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(isNightMode(ctx, useMapTheme))));
|
||||
iv.setContentDescription(mode.toHumanString());
|
||||
// tb.setCompoundDrawablesWithIntrinsicBounds(null, ctx.getIconsCache().getIcon(mode.getIconId(), R.color.app_mode_icon_color), null, null);
|
||||
LayoutParams lp = new LinearLayout.LayoutParams(metricsX, metricsY);
|
||||
|
|
|
@ -121,7 +121,7 @@ public class StartGPSStatus extends OsmAndAction {
|
|||
cb.setLayoutParams(lp);
|
||||
cb.setPadding(dp8, 0, 0, 0);
|
||||
int textColorPrimary = ContextCompat.getColor(activity, isNightMode() ? R.color.text_color_primary_dark : R.color.text_color_primary_light);
|
||||
int selectedModeColor = ContextCompat.getColor(activity, getSettings().getApplicationMode().getIconColorInfo().getColor(isNightMode()));
|
||||
int selectedModeColor = getSettings().getApplicationMode().getProfileColor(isNightMode());
|
||||
cb.setTextColor(textColorPrimary);
|
||||
UiUtilities.setupCompoundButton(isNightMode(), selectedModeColor, cb);
|
||||
|
||||
|
|
|
@ -678,7 +678,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
public boolean onContextMenuClick(ArrayAdapter<ContextMenuItem> adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) {
|
||||
if (itemId == R.string.layer_recordings) {
|
||||
SHOW_RECORDINGS.set(!SHOW_RECORDINGS.get());
|
||||
adapter.getItem(pos).setColorRes(SHOW_RECORDINGS.get() ?
|
||||
adapter.getItem(pos).setColor(app, SHOW_RECORDINGS.get() ?
|
||||
R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
updateLayers(mapView, mapActivity);
|
||||
|
@ -690,7 +690,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
.setId(RECORDING_LAYER)
|
||||
.setSelected(SHOW_RECORDINGS.get())
|
||||
.setIcon(R.drawable.ic_action_micro_dark)
|
||||
.setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(mapActivity, SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setItemDeleteAction(makeDeleteAction(SHOW_RECORDINGS))
|
||||
.setListener(listener).createItem());
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -91,6 +92,16 @@ public abstract class BottomSheetDialogFragment extends DialogFragment {
|
|||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Drawable getPaintedIcon(@DrawableRes int drawableRes, @ColorInt int color) {
|
||||
OsmandApplication app = getMyApplication();
|
||||
if (app != null) {
|
||||
return app.getUIUtilities().getPaintedIcon(drawableRes, color);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Drawable getContentIcon(@DrawableRes int drawableRes) {
|
||||
OsmandApplication app = getMyApplication();
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.CompoundButton;
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
@ -22,6 +23,7 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
|
|||
private ColorStateList buttonTintList;
|
||||
private OnCheckedChangeListener onCheckedChangeListener;
|
||||
@ColorRes private int compoundButtonColorId;
|
||||
@ColorInt private Integer compoundButtonColor;
|
||||
|
||||
private CompoundButton compoundButton;
|
||||
|
||||
|
@ -80,6 +82,10 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
|
|||
this.compoundButtonColorId = compoundButtonColorId;
|
||||
}
|
||||
|
||||
public void setCompoundButtonColor(@ColorInt int compoundButtonColor) {
|
||||
this.compoundButtonColor = compoundButtonColor;
|
||||
}
|
||||
|
||||
public CompoundButton getCompoundButton() {
|
||||
return compoundButton;
|
||||
}
|
||||
|
@ -91,7 +97,9 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
|
|||
if (compoundButton != null) {
|
||||
compoundButton.setChecked(checked);
|
||||
compoundButton.setOnCheckedChangeListener(onCheckedChangeListener);
|
||||
if (compoundButtonColorId != INVALID_ID) {
|
||||
if (compoundButtonColor != null) {
|
||||
UiUtilities.setupCompoundButton(nightMode, compoundButtonColor, compoundButton);
|
||||
} else if (compoundButtonColorId != INVALID_ID) {
|
||||
UiUtilities.setupCompoundButton(nightMode, ContextCompat.getColor(context, compoundButtonColorId), compoundButton);
|
||||
} else {
|
||||
CompoundButtonCompat.setButtonTintList(compoundButton, buttonTintList);
|
||||
|
@ -105,6 +113,7 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
|
|||
protected ColorStateList buttonTintList;
|
||||
protected OnCheckedChangeListener onCheckedChangeListener;
|
||||
@ColorRes protected int compoundButtonColorId = INVALID_ID;
|
||||
@ColorInt protected Integer compoundButtonColor = null;
|
||||
|
||||
public Builder setChecked(boolean checked) {
|
||||
this.checked = checked;
|
||||
|
@ -126,6 +135,11 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
|
|||
return this;
|
||||
}
|
||||
|
||||
public Builder setCompoundButtonColor(@ColorInt int compoundButtonColor) {
|
||||
this.compoundButtonColor = compoundButtonColor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BottomSheetItemWithCompoundButton create() {
|
||||
return new BottomSheetItemWithCompoundButton(customView,
|
||||
layoutId,
|
||||
|
|
|
@ -172,7 +172,7 @@ public class ConfigureMapMenu {
|
|||
final MapActivity activity, final int themeRes, final boolean nightMode) {
|
||||
final OsmandApplication app = activity.getMyApplication();
|
||||
final OsmandSettings settings = app.getSettings();
|
||||
final int selectedProfileColorRes = settings.getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
final int selectedProfileColor = settings.getApplicationMode().getProfileColor(nightMode);
|
||||
MapLayerMenuListener l = new MapLayerMenuListener(activity, adapter);
|
||||
adapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||
.setId(SHOW_CATEGORY_ID)
|
||||
|
@ -184,7 +184,7 @@ public class ConfigureMapMenu {
|
|||
.setId(FAVORITES_ID)
|
||||
.setTitleId(R.string.shared_string_favorites, activity)
|
||||
.setSelected(settings.SHOW_FAVORITES.get())
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_favorite)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.SHOW_FAVORITES))
|
||||
.setListener(l)
|
||||
|
@ -196,7 +196,7 @@ public class ConfigureMapMenu {
|
|||
.setTitleId(R.string.layer_poi, activity)
|
||||
.setSelected(selected)
|
||||
.setDescription(app.getPoiFilters().getSelectedPoiFiltersName(wiki))
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_info_dark)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(l).createItem());
|
||||
|
@ -205,7 +205,7 @@ public class ConfigureMapMenu {
|
|||
.setId(POI_OVERLAY_LABELS_ID)
|
||||
.setTitleId(R.string.layer_amenity_label, activity)
|
||||
.setSelected(settings.SHOW_POI_LABEL.get())
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_text_dark)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.SHOW_POI_LABEL))
|
||||
.setListener(l).createItem());
|
||||
|
@ -217,7 +217,7 @@ public class ConfigureMapMenu {
|
|||
.setIcon(R.drawable.ic_action_transport_bus)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setSelected(selected)
|
||||
.setColor(selected ? selectedProfileColorRes : ContextMenuItem.INVALID_ID)
|
||||
.setColor(selected ? selectedProfileColor : null)
|
||||
.setListener(l).createItem());
|
||||
|
||||
selected = app.getSelectedGpxHelper().isShowingAnyGpxFiles();
|
||||
|
@ -226,7 +226,7 @@ public class ConfigureMapMenu {
|
|||
.setTitleId(R.string.layer_gpx_layer, activity)
|
||||
.setSelected(app.getSelectedGpxHelper().isShowingAnyGpxFiles())
|
||||
.setDescription(app.getSelectedGpxHelper().getGpxDescription())
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_polygom_dark)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(l).createItem());
|
||||
|
@ -236,7 +236,7 @@ public class ConfigureMapMenu {
|
|||
.setId(MAP_MARKERS_ID)
|
||||
.setTitleId(R.string.map_markers, activity)
|
||||
.setSelected(selected)
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_flag)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.SHOW_MAP_MARKERS))
|
||||
.setListener(l).createItem());
|
||||
|
@ -267,8 +267,7 @@ public class ConfigureMapMenu {
|
|||
final int themeRes, final boolean nightMode) {
|
||||
final OsmandApplication app = activity.getMyApplication();
|
||||
final OsmandSettings settings = app.getSettings();
|
||||
final int selectedProfileColorRes = settings.APPLICATION_MODE.get().getIconColorInfo().getColor(nightMode);
|
||||
final int selectedProfileColor = ContextCompat.getColor(app, selectedProfileColorRes);
|
||||
final int selectedProfileColor = settings.APPLICATION_MODE.get().getProfileColor(nightMode);
|
||||
|
||||
adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.map_widget_map_rendering, activity)
|
||||
.setId(MAP_RENDERING_CATEGORY_ID)
|
||||
|
@ -705,7 +704,6 @@ public class ConfigureMapMenu {
|
|||
for (int i = 0; i < prefs.size(); i++) {
|
||||
prefs.get(i).set(false);
|
||||
}
|
||||
adapter.getItem(pos).setColorRes(ContextMenuItem.INVALID_ID);
|
||||
a.notifyDataSetInvalidated();
|
||||
activity.refreshMapComplete();
|
||||
activity.getMapLayers().updateLayers(activity.getMapView());
|
||||
|
@ -739,7 +737,7 @@ public class ConfigureMapMenu {
|
|||
}
|
||||
}
|
||||
}
|
||||
builder.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
builder.setColor(activity, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
if (useDescription) {
|
||||
final String descr = getDescription(prefs, includedPrefs);
|
||||
builder.setDescription(descr);
|
||||
|
@ -840,7 +838,7 @@ public class ConfigureMapMenu {
|
|||
selected |= prefs.get(i).get();
|
||||
}
|
||||
adapter.getItem(pos).setSelected(selected);
|
||||
adapter.getItem(pos).setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.getItem(pos).setColor(activity, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
a.notifyDataSetInvalidated();
|
||||
}
|
||||
});
|
||||
|
@ -875,7 +873,7 @@ public class ConfigureMapMenu {
|
|||
} else {
|
||||
adapter.getItem(pos).setSelected(selected);
|
||||
}
|
||||
adapter.getItem(pos).setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.getItem(pos).setColor(activity, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
}
|
||||
a.notifyDataSetInvalidated();
|
||||
activity.refreshMapComplete();
|
||||
|
|
|
@ -98,7 +98,7 @@ public class DetailsBottomSheet extends BasePreferenceBottomSheet {
|
|||
|
||||
@Override
|
||||
public void createMenuItems(Bundle savedInstanceState) {
|
||||
int selectedProfileColorRes = app.getSettings().APPLICATION_MODE.get().getIconColorInfo().getColor(nightMode);
|
||||
int selectedProfileColor = app.getSettings().APPLICATION_MODE.get().getProfileColor(nightMode);
|
||||
float spacing = getResources().getDimension(R.dimen.line_spacing_extra_description);
|
||||
LinearLayout linearLayout = new LinearLayout(app);
|
||||
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||
|
@ -139,7 +139,7 @@ public class DetailsBottomSheet extends BasePreferenceBottomSheet {
|
|||
streetLightsNightPref.set(!onLeftClick);
|
||||
}
|
||||
})
|
||||
.setCompoundButtonColorId(selectedProfileColorRes)
|
||||
.setCompoundButtonColor(selectedProfileColor)
|
||||
.setChecked(pref.get())
|
||||
.setTitle(propertyName)
|
||||
.setIconHidden(true)
|
||||
|
@ -160,7 +160,7 @@ public class DetailsBottomSheet extends BasePreferenceBottomSheet {
|
|||
} else if (!STREET_LIGHTING_NIGHT.equals(property.getAttrName())) {
|
||||
final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1];
|
||||
item[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(selectedProfileColorRes)
|
||||
.setCompoundButtonColor(selectedProfileColor)
|
||||
.setChecked(pref.get())
|
||||
.setTitle(propertyName)
|
||||
.setIconHidden(true)
|
||||
|
@ -217,7 +217,7 @@ public class DetailsBottomSheet extends BasePreferenceBottomSheet {
|
|||
}
|
||||
if (adapter != null) {
|
||||
adapter.getItem(position).setSelected(checked);
|
||||
adapter.getItem(position).setColorRes(checked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.getItem(position).setColor(app, checked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.getItem(position).setDescription(getString(
|
||||
R.string.ltr_or_rtl_combine_via_slash,
|
||||
String.valueOf(selected),
|
||||
|
|
|
@ -77,7 +77,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
public boolean processResult(Boolean result) {
|
||||
if (item != null) {
|
||||
item.setSelected(result);
|
||||
item.setColorRes(result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(mapActivity, result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
return true;
|
||||
|
@ -86,7 +86,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
boolean selected = TransportLinesMenu.isShowLines(mapActivity.getMyApplication());
|
||||
if (!selected && item != null) {
|
||||
item.setSelected(true);
|
||||
item.setColorRes(R.color.osmand_orange);
|
||||
item.setColor(mapActivity, R.color.osmand_orange);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
return false;
|
||||
|
@ -94,7 +94,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item);
|
||||
if (btn != null && btn.getVisibility() == View.VISIBLE) {
|
||||
btn.setChecked(!btn.isChecked());
|
||||
menuAdapter.getItem(pos).setColorRes(btn.isChecked() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
menuAdapter.getItem(pos).setColor(mapActivity, btn.isChecked() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
return false;
|
||||
} else {
|
||||
|
@ -110,7 +110,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
final PoiFiltersHelper poiFiltersHelper = mapActivity.getMyApplication().getPoiFilters();
|
||||
final ContextMenuItem item = menuAdapter.getItem(pos);
|
||||
if (item.getSelected() != null) {
|
||||
item.setColorRes(isChecked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(mapActivity, isChecked ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
}
|
||||
if (itemId == R.string.layer_poi) {
|
||||
PoiUIFilter wiki = poiFiltersHelper.getTopWikiPoiFilter();
|
||||
|
@ -139,7 +139,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
@Override
|
||||
public boolean processResult(Boolean result) {
|
||||
item.setSelected(result);
|
||||
item.setColorRes(result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(mapActivity, result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
return true;
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
boolean selected = app.getSelectedGpxHelper().isShowingAnyGpxFiles();
|
||||
item.setSelected(selected);
|
||||
item.setDescription(app.getSelectedGpxHelper().getGpxDescription());
|
||||
item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(mapActivity, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
@ -189,7 +189,7 @@ final class MapLayerMenuListener extends OnRowItemClick {
|
|||
boolean selected = pf.isShowingAnyPoi(wiki);
|
||||
item.setSelected(selected);
|
||||
item.setDescription(pf.getSelectedPoiFiltersName(wiki));
|
||||
item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(mapActivity, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -174,8 +174,8 @@ public class SelectMapViewQuickActionsBottomSheet extends MenuBottomSheetDialogF
|
|||
if (appMode != null) {
|
||||
boolean selected = key.equals(selectedItem);
|
||||
int iconId = appMode.getIconRes();
|
||||
int colorId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
Drawable icon = getIcon(iconId, colorId);
|
||||
int color = appMode.getProfileColor(nightMode);
|
||||
Drawable icon = getPaintedIcon(iconId, color);
|
||||
String translatedName = appMode.toHumanString();
|
||||
createItemRow(selected, counter, icon, translatedName, key);
|
||||
counter++;
|
||||
|
|
|
@ -516,13 +516,13 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement
|
|||
.setTitleId(R.string.shared_string_refresh, getContext())
|
||||
.setIcon(R.drawable.ic_action_refresh_dark)
|
||||
.setListener(listener)
|
||||
.setColor(iconColorResId)
|
||||
.setColor(getContext(), iconColorResId)
|
||||
.createItem());
|
||||
optionsMenuAdapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||
.setTitleId(R.string.shared_string_delete, getContext())
|
||||
.setIcon(R.drawable.ic_action_delete_dark)
|
||||
.setListener(listener)
|
||||
.setColor(iconColorResId)
|
||||
.setColor(getContext(), iconColorResId)
|
||||
.createItem());
|
||||
optionsMenuAdapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||
.setTitleId(R.string.local_index_mi_backup, getContext())
|
||||
|
@ -554,7 +554,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement
|
|||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||
}
|
||||
if (contextMenuItem.getIcon() != -1) {
|
||||
Drawable icMenuItem = getMyApplication().getUIUtilities().getIcon(contextMenuItem.getIcon(), contextMenuItem.getColorRes());
|
||||
Drawable icMenuItem = getMyApplication().getUIUtilities().getPaintedIcon(contextMenuItem.getIcon(), contextMenuItem.getColor());
|
||||
item.setIcon(icMenuItem);
|
||||
}
|
||||
|
||||
|
|
|
@ -477,7 +477,7 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment implemen
|
|||
if (!ColorDialogs.isPaletteColor(customColor)) {
|
||||
colors.add(customColor);
|
||||
}
|
||||
colorsCard = new ColorsCard(mapActivity, selectedColor, this, colors);
|
||||
colorsCard = new ColorsCard(mapActivity, selectedColor, this, colors, app.getSettings().CUSTOM_TRACK_COLORS, null);
|
||||
colorsCard.setListener(this);
|
||||
LinearLayout selectColor = view.findViewById(R.id.select_color);
|
||||
selectColor.addView(colorsCard.build(view.getContext()));
|
||||
|
|
|
@ -61,8 +61,7 @@ public class MapillaryFiltersFragment extends BaseOsmAndFragment {
|
|||
final int backgroundColor = ContextCompat.getColor(getActivity(),
|
||||
nightMode ? R.color.activity_background_color_dark : R.color.activity_background_color_light);
|
||||
final DateFormat dateFormat = SimpleDateFormat.getDateInstance(DateFormat.MEDIUM);
|
||||
final int currentModeColorRes = getMyApplication().getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
final int currentModeColor = ContextCompat.getColor(getActivity(), currentModeColorRes);
|
||||
final int currentModeColor = getMyApplication().getSettings().getApplicationMode().getProfileColor(nightMode);
|
||||
|
||||
final View view = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_mapillary_filters, null);
|
||||
view.findViewById(R.id.mapillary_filters_linear_layout).setBackgroundColor(backgroundColor);
|
||||
|
@ -71,17 +70,17 @@ public class MapillaryFiltersFragment extends BaseOsmAndFragment {
|
|||
final View toggleRow = view.findViewById(R.id.toggle_row);
|
||||
final boolean selected = settings.SHOW_MAPILLARY.get();
|
||||
final int toggleActionStringId = selected ? R.string.shared_string_on : R.string.shared_string_off;
|
||||
int toggleIconColorId;
|
||||
int toggleIconColor;
|
||||
int toggleIconId;
|
||||
if (selected) {
|
||||
toggleIconId = R.drawable.ic_action_view;
|
||||
toggleIconColorId = currentModeColorRes;
|
||||
toggleIconColor = currentModeColor;
|
||||
} else {
|
||||
toggleIconId = R.drawable.ic_action_hide;
|
||||
toggleIconColorId = nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light;
|
||||
toggleIconColor = ContextCompat.getColor(getContext(), nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light);
|
||||
}
|
||||
((AppCompatTextView) toggleRow.findViewById(R.id.toggle_row_title)).setText(toggleActionStringId);
|
||||
final Drawable drawable = getIcon(toggleIconId, toggleIconColorId);
|
||||
final Drawable drawable = getPaintedContentIcon(toggleIconId, toggleIconColor);
|
||||
((AppCompatImageView) toggleRow.findViewById(R.id.toggle_row_icon)).setImageDrawable(drawable);
|
||||
final CompoundButton toggle = (CompoundButton) toggleRow.findViewById(R.id.toggle_row_toggle);
|
||||
toggle.setOnCheckedChangeListener(null);
|
||||
|
|
|
@ -185,7 +185,7 @@ public class MapillaryPlugin extends OsmandPlugin {
|
|||
ContextMenuItem item = adapter.getItem(pos);
|
||||
if (item != null) {
|
||||
item.setSelected(settings.SHOW_MAPILLARY.get());
|
||||
item.setColorRes(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
@ -201,7 +201,7 @@ public class MapillaryPlugin extends OsmandPlugin {
|
|||
.setTitleId(R.string.street_level_imagery, mapActivity)
|
||||
.setDescription("Mapillary")
|
||||
.setSelected(settings.SHOW_MAPILLARY.get())
|
||||
.setColor(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_mapillary)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.SHOW_MAPILLARY))
|
||||
|
|
|
@ -99,8 +99,7 @@ public class InputZoomLevelsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
final TextView maxZoomValue = sliderView.findViewById(R.id.zoom_value_max);
|
||||
maxZoomValue.setText(String.valueOf(maxZoom));
|
||||
RangeSlider slider = sliderView.findViewById(R.id.zoom_slider);
|
||||
int colorProfileRes = app.getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
int colorProfile = ContextCompat.getColor(app, colorProfileRes);
|
||||
int colorProfile = app.getSettings().getApplicationMode().getProfileColor(nightMode);
|
||||
UiUtilities.setupSlider(slider, nightMode, colorProfile, true);
|
||||
slider.setValueFrom(SLIDER_FROM);
|
||||
slider.setValueTo(SLIDER_TO);
|
||||
|
|
|
@ -1350,7 +1350,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
|
|||
snapToRoadBtn.setVisibility(View.VISIBLE);
|
||||
profileWithConfig.setVisibility(View.GONE);
|
||||
} else {
|
||||
icon = getIcon(appMode.getIconRes(), appMode.getIconColorInfo().getColor(nightMode));
|
||||
icon = getPaintedContentIcon(appMode.getIconRes(), appMode.getProfileColor(nightMode));
|
||||
snapToRoadBtn.setVisibility(View.GONE);
|
||||
profileWithConfig.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public class OptionsBottomSheetDialogFragment extends MenuBottomSheetDialogFragm
|
|||
icon = getContentIcon(R.drawable.ic_action_split_interval);
|
||||
} else {
|
||||
description = routeAppMode.toHumanString();
|
||||
icon = getIcon(routeAppMode.getIconRes(), routeAppMode.getIconColorInfo().getColor(nightMode));
|
||||
icon = getPaintedIcon(routeAppMode.getIconRes(), routeAppMode.getProfileColor(nightMode));
|
||||
}
|
||||
} else {
|
||||
description = getString(R.string.shared_string_undefined);
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ProfileCard extends BaseCard {
|
|||
for (int i = 0; i < modes.size(); i++) {
|
||||
ApplicationMode mode = modes.get(i);
|
||||
LinearLayout container = view.findViewById(R.id.content_container);
|
||||
Drawable icon = app.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode));
|
||||
Drawable icon = app.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode));
|
||||
String title = mode.toHumanString();
|
||||
View.OnClickListener onClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -117,7 +117,7 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha
|
|||
for (int i = 0; i < modes.size(); i++) {
|
||||
ApplicationMode mode = modes.get(i);
|
||||
if (!"public_transport".equals(mode.getRoutingProfile())) {
|
||||
icon = app.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode));
|
||||
icon = app.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode));
|
||||
addProfileView(navigationType, onClickListener, i, icon, mode.toHumanString(), mode.equals(appMode));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -403,7 +403,7 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo
|
|||
if (MeasurementEditingContext.DEFAULT_APP_MODE.equals(routeAppMode)) {
|
||||
icon = getContentIcon(R.drawable.ic_action_split_interval);
|
||||
} else {
|
||||
icon = getIcon(routeAppMode.getIconRes(), routeAppMode.getIconColorInfo().getColor(nightMode));
|
||||
icon = getPaintedIcon(routeAppMode.getIconRes(), routeAppMode.getProfileColor(nightMode));
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public class SnapToRoadBottomSheetDialogFragment extends BottomSheetDialogFragme
|
|||
|
||||
for (int i = 0; i < modes.size(); i++) {
|
||||
ApplicationMode mode = modes.get(i);
|
||||
Drawable icon = app.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode));
|
||||
Drawable icon = app.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getProfileColor(nightMode));
|
||||
addProfileView(container, onClickListener, i, icon, mode.toHumanString());
|
||||
}
|
||||
|
||||
|
|
|
@ -560,7 +560,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
|
|||
ApplicationMode appMode = app.getSettings().getApplicationMode();
|
||||
int textColorPrimary = ContextCompat.getColor(app, nightMode ? R.color.text_color_primary_dark : R.color.text_color_primary_light);
|
||||
int textColorSecondary = ContextCompat.getColor(app, nightMode ? R.color.text_color_secondary_dark : R.color.text_color_secondary_light);
|
||||
int selectedModeColor = ContextCompat.getColor(uiCtx, appMode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = appMode.getProfileColor(nightMode);
|
||||
LinearLayout ll = new LinearLayout(uiCtx);
|
||||
final int dp24 = AndroidUtils.dpToPx(uiCtx, 24f);
|
||||
final int dp8 = AndroidUtils.dpToPx(uiCtx, 8f);
|
||||
|
|
|
@ -116,8 +116,7 @@ public class TripRecordingBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
container = itemView.findViewById(R.id.always_ask_and_range_slider_container);
|
||||
RangeSlider intervalSlider = itemView.findViewById(R.id.interval_slider);
|
||||
intervalSlider.setValueTo(secondsLength + minutesLength - 1);
|
||||
int currentModeColorRes = app.getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
int currentModeColor = ContextCompat.getColor(app, currentModeColorRes);
|
||||
int currentModeColor = app.getSettings().getApplicationMode().getProfileColor(nightMode);
|
||||
UiUtilities.setupSlider(intervalSlider, nightMode, currentModeColor, true);
|
||||
container.setVisibility(View.GONE);
|
||||
intervalSlider.addOnChangeListener(new RangeSlider.OnChangeListener() {
|
||||
|
|
|
@ -121,7 +121,7 @@ public class EditTrackGroupDialogFragment extends MenuBottomSheetDialogFragment
|
|||
final ApplicationMode mode = app.getSettings().getApplicationMode();
|
||||
final BottomSheetItemWithCompoundButton[] showOnMapItem = new BottomSheetItemWithCompoundButton[1];
|
||||
showOnMapItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(mode.getIconColorInfo().getColor(nightMode))
|
||||
.setCompoundButtonColor(mode.getProfileColor(nightMode))
|
||||
.setChecked(checked)
|
||||
.setTitle(getString(R.string.shared_string_show_on_map))
|
||||
.setCustomView(getCustomButtonView(app, mode, checked, nightMode))
|
||||
|
|
|
@ -78,7 +78,7 @@ public class OnlineRoutingCard extends BaseCard {
|
|||
bottomDivider = view.findViewById(R.id.bottom_divider);
|
||||
button = view.findViewById(R.id.button);
|
||||
|
||||
int activeColor = ContextCompat.getColor(app, appMode.getIconColorInfo().getColor(nightMode));
|
||||
int activeColor = appMode.getProfileColor(nightMode);
|
||||
textFieldBoxes.setPrimaryColor(activeColor);
|
||||
textFieldBoxes.setGravityFloatingLabel(Gravity.START);
|
||||
|
||||
|
|
|
@ -324,7 +324,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
.setTitleId(R.string.layer_osm_bugs, mapActivity)
|
||||
.setSelected(settings.SHOW_OSM_BUGS.get())
|
||||
.setIcon(R.drawable.ic_action_osm_note)
|
||||
.setColor(settings.SHOW_OSM_BUGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, settings.SHOW_OSM_BUGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(new ContextMenuAdapter.OnRowItemClick() {
|
||||
|
||||
|
@ -343,7 +343,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
if (itemId == R.string.layer_osm_bugs) {
|
||||
OsmandPreference<Boolean> showOsmBugs = settings.SHOW_OSM_BUGS;
|
||||
showOsmBugs.set(isChecked);
|
||||
adapter.getItem(pos).setColorRes(showOsmBugs.get() ?
|
||||
adapter.getItem(pos).setColor(app, showOsmBugs.get() ?
|
||||
R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
updateLayers(mapActivity.getMapView(), mapActivity);
|
||||
|
@ -359,14 +359,14 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
.setTitleId(R.string.layer_osm_edits, mapActivity)
|
||||
.setSelected(settings.SHOW_OSM_EDITS.get())
|
||||
.setIcon(R.drawable.ic_action_openstreetmap_logo)
|
||||
.setColor(settings.SHOW_OSM_EDITS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, settings.SHOW_OSM_EDITS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setListener(new ContextMenuAdapter.OnRowItemClick() {
|
||||
@Override
|
||||
public boolean onContextMenuClick(ArrayAdapter<ContextMenuItem> adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) {
|
||||
if (itemId == R.string.layer_osm_edits) {
|
||||
OsmandPreference<Boolean> showOsmEdits = settings.SHOW_OSM_EDITS;
|
||||
showOsmEdits.set(isChecked);
|
||||
adapter.getItem(pos).setColorRes(showOsmEdits.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.getItem(pos).setColor(app, showOsmEdits.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
updateLayers(mapActivity.getMapView(), mapActivity);
|
||||
}
|
||||
|
@ -404,7 +404,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
final AvailableGPXFragment f = ((AvailableGPXFragment) fragment);
|
||||
optionsMenuAdapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.local_index_mi_upload_gpx, activity)
|
||||
.setIcon(R.drawable.ic_action_export)
|
||||
.setColor(R.color.color_white)
|
||||
.setColor(app, R.color.color_white)
|
||||
.setListener(new ItemClickListener() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -46,7 +46,7 @@ public class OsmNotesMenu {
|
|||
|
||||
final boolean nightMode = isNightMode(app);
|
||||
final int themeRes = getThemeRes(app);
|
||||
final int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
|
||||
final int selectedModeColor = settings.getApplicationMode().getProfileColor(nightMode);
|
||||
|
||||
final int osmNotesStringId = R.string.layer_osm_bugs;
|
||||
final int showZoomLevelStringId = R.string.show_from_zoom_level;
|
||||
|
@ -110,7 +110,7 @@ public class OsmNotesMenu {
|
|||
.setTitleId(osmNotesStringId, mapActivity)
|
||||
.setDescription(mapActivity.getString(R.string.switch_osm_notes_visibility_desc))
|
||||
.setIcon(R.drawable.ic_action_osm_note)
|
||||
.setColor(toggleIconColorId)
|
||||
.setColor(app, toggleIconColorId)
|
||||
.setListener(l)
|
||||
.setSelected(showOsmBugs)
|
||||
.createItem());
|
||||
|
|
|
@ -310,13 +310,12 @@ public class RearrangePoiFiltersFragment extends DialogFragment implements Selec
|
|||
ImageView profileIcon = (ImageView) view.findViewById(R.id.profile_icon);
|
||||
if (profileIcon != null) {
|
||||
int iconRes = selectedAppMode.getIconRes();
|
||||
int iconColor = selectedAppMode.getIconColorInfo().getColor(nightMode);
|
||||
profileIcon.setImageDrawable(uiUtilities.getPaintedIcon(iconRes, iconColor));
|
||||
profileIcon.setImageDrawable(uiUtilities.getPaintedIcon(iconRes, selectedAppMode.getProfileColor(nightMode)));
|
||||
}
|
||||
|
||||
View profileButton = view.findViewById(R.id.profile_button);
|
||||
if (profileButton != null) {
|
||||
int iconColor = getSelectedAppMode().getIconColorInfo().getColor(nightMode);
|
||||
int iconColor = getSelectedAppMode().getProfileColor(nightMode);
|
||||
int bgColor = ContextCompat.getColor(app, nightMode ?
|
||||
R.color.divider_color_dark : R.color.active_buttons_and_links_text_light);
|
||||
int selectedColor = UiUtilities.getColorWithAlpha(iconColor, 0.3f);
|
||||
|
|
|
@ -67,7 +67,7 @@ public class AppProfileArrayAdapter extends ArrayAdapter<ProfileDataObject> {
|
|||
Drawable iconDrawable;
|
||||
boolean lightContent = app.getSettings().isLightContent();
|
||||
if (mode.isSelected()) {
|
||||
iconDrawable = app.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColor(!lightContent));
|
||||
iconDrawable = app.getUIUtilities().getPaintedIcon(mode.getIconRes(), mode.getIconColor(!lightContent));
|
||||
} else {
|
||||
iconDrawable = app.getUIUtilities().getIcon(mode.getIconRes(), lightContent);
|
||||
}
|
||||
|
|
|
@ -6,10 +6,12 @@ import android.view.ViewGroup;
|
|||
import android.widget.CompoundButton;
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
|
@ -35,8 +37,8 @@ public class ConfigureProfileMenuAdapter extends AbstractProfileMenuAdapter<Conf
|
|||
@Nullable
|
||||
private ProfileSelectedListener profileSelectedListener;
|
||||
private final OsmandApplication app;
|
||||
@ColorRes
|
||||
private int selectedIconColorRes;
|
||||
@ColorInt
|
||||
private int selectedIconColor;
|
||||
private boolean bottomButton;
|
||||
private String bottomButtonText;
|
||||
private static final String BUTTON_ITEM = "button_item";
|
||||
|
@ -54,9 +56,10 @@ public class ConfigureProfileMenuAdapter extends AbstractProfileMenuAdapter<Conf
|
|||
this.bottomButton = !Algorithms.isEmpty(bottomButtonText);
|
||||
this.bottomButtonText = bottomButtonText;
|
||||
this.nightMode = nightMode;
|
||||
selectedIconColorRes = nightMode
|
||||
int selectedIconColorRes = nightMode
|
||||
? R.color.active_color_primary_dark
|
||||
: R.color.active_color_primary_light;
|
||||
selectedIconColor = ContextCompat.getColor(app, selectedIconColorRes);
|
||||
}
|
||||
|
||||
public List<Object> getItems() {
|
||||
|
@ -137,9 +140,9 @@ public class ConfigureProfileMenuAdapter extends AbstractProfileMenuAdapter<Conf
|
|||
if (iconRes == 0 || iconRes == -1) {
|
||||
iconRes = R.drawable.ic_action_world_globe;
|
||||
}
|
||||
selectedIconColorRes = mode.getIconColorInfo().getColor(nightMode);
|
||||
selectedIconColor = mode.getProfileColor(nightMode);
|
||||
if (selectedItems.contains(mode)) {
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, selectedIconColorRes));
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(iconRes, selectedIconColor));
|
||||
} else {
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, R.color.profile_icon_color_inactive));
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import android.widget.ImageButton;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
@ -241,7 +242,7 @@ public class EditProfilesFragment extends BaseOsmAndFragment {
|
|||
order = mode.getOrder();
|
||||
}
|
||||
profiles.add(new EditProfileDataObject(modeKey, mode.toHumanString(), ProfileDataUtils.getAppModeDescription(getContext(), mode),
|
||||
mode.getIconRes(), false, mode.isCustomProfile(), deleted, mode.getIconColorInfo(), order));
|
||||
mode.getIconRes(), false, mode.isCustomProfile(), deleted, mode.getProfileColor(false), mode.getProfileColor(true), order));
|
||||
}
|
||||
}
|
||||
Collections.sort(profiles, new Comparator<EditProfileDataObject>() {
|
||||
|
@ -274,8 +275,9 @@ public class EditProfilesFragment extends BaseOsmAndFragment {
|
|||
private boolean deleted;
|
||||
private boolean customProfile;
|
||||
|
||||
EditProfileDataObject(String stringKey, String name, String descr, int iconRes, boolean isSelected, boolean customProfile, boolean deleted, ProfileIconColors iconColor, int order) {
|
||||
super(name, descr, stringKey, iconRes, isSelected, iconColor);
|
||||
EditProfileDataObject(String stringKey, String name, String descr, int iconRes, boolean isSelected,
|
||||
boolean customProfile, boolean deleted, @ColorInt int iconColorLight, @ColorInt int iconColorDark, int order) {
|
||||
super(name, descr, stringKey, iconRes, isSelected, iconColorLight, iconColorDark);
|
||||
this.customProfile = customProfile;
|
||||
this.deleted = deleted;
|
||||
this.order = order;
|
||||
|
@ -365,10 +367,9 @@ public class EditProfilesFragment extends BaseOsmAndFragment {
|
|||
if (iconRes == 0 || iconRes == -1) {
|
||||
iconRes = R.drawable.ic_action_world_globe;
|
||||
}
|
||||
int profileColorResId = mode.getIconColor(nightMode);
|
||||
int colorNoAlpha = ContextCompat.getColor(app, profileColorResId);
|
||||
int colorNoAlpha = mode.getIconColor(nightMode);
|
||||
|
||||
profileViewHolder.icon.setImageDrawable(uiUtilities.getIcon(iconRes, profileColorResId));
|
||||
profileViewHolder.icon.setImageDrawable(uiUtilities.getPaintedIcon(iconRes, colorNoAlpha));
|
||||
|
||||
//set up cell color
|
||||
Drawable drawable = UiUtilities.getColoredSelectableDrawable(app, colorNoAlpha, 0.3f);
|
||||
|
|
|
@ -12,7 +12,7 @@ public class OnlineRoutingEngineDataObject extends ProfileDataObject {
|
|||
String description,
|
||||
String stringKey,
|
||||
int order) {
|
||||
super(name, description, stringKey, R.drawable.ic_world_globe_dark, false, null);
|
||||
super(name, description, stringKey, R.drawable.ic_world_globe_dark, false, null, null);
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.osmand.plus.profiles;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
|
@ -12,15 +13,20 @@ public class ProfileDataObject implements Comparable<ProfileDataObject> {
|
|||
private String stringKey;
|
||||
private boolean isSelected;
|
||||
private boolean isEnabled;
|
||||
private ProfileIconColors iconColor;
|
||||
@ColorInt
|
||||
private Integer iconColorLight;
|
||||
@ColorInt
|
||||
private Integer iconColorDark;
|
||||
|
||||
public ProfileDataObject(String name, String description, String stringKey, int iconRes, boolean isSelected, ProfileIconColors iconColor) {
|
||||
public ProfileDataObject(String name, String description, String stringKey, int iconRes, boolean isSelected,
|
||||
@ColorInt Integer iconColorLight, @ColorInt Integer iconColorDark) {
|
||||
this.name = name;
|
||||
this.iconRes = iconRes;
|
||||
this.description = description;
|
||||
this.isSelected = isSelected;
|
||||
this.stringKey = stringKey;
|
||||
this.iconColor = iconColor;
|
||||
this.iconColorLight = iconColorLight;
|
||||
this.iconColorDark = iconColorDark;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@ -55,8 +61,9 @@ public class ProfileDataObject implements Comparable<ProfileDataObject> {
|
|||
return stringKey;
|
||||
}
|
||||
|
||||
@ColorRes public int getIconColor(boolean isNightMode) {
|
||||
return iconColor.getColor(isNightMode);
|
||||
@ColorInt
|
||||
public int getIconColor(boolean isNightMode) {
|
||||
return isNightMode ? iconColorDark : iconColorLight;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -33,7 +33,7 @@ public class ProfileDataUtils {
|
|||
description = getAppModeDescription(app, mode);
|
||||
}
|
||||
profiles.add(new ProfileDataObject(mode.toHumanString(), description,
|
||||
mode.getStringKey(), mode.getIconRes(), false, mode.getIconColorInfo()));
|
||||
mode.getStringKey(), mode.getIconRes(), false, mode.getProfileColor(false), mode.getProfileColor(true)));
|
||||
}
|
||||
return profiles;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ public enum ProfileIconColors {
|
|||
return name;
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
public int getColor(boolean nightMode) {
|
||||
return nightMode ? nightColor : dayColor;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ public class RoutingProfileDataObject extends ProfileDataObject {
|
|||
private String fileName;
|
||||
|
||||
public RoutingProfileDataObject(String stringKey, String name, String descr, int iconRes, boolean isSelected, String fileName) {
|
||||
super(name, descr, stringKey, iconRes, isSelected, null);
|
||||
super(name, descr, stringKey, iconRes, isSelected, null, null);
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
|
|
|
@ -67,10 +67,9 @@ public class SelectCopyProfilesMenuAdapter extends AbstractProfileMenuAdapter<Se
|
|||
if (iconRes == 0 || iconRes == -1) {
|
||||
iconRes = R.drawable.ic_action_world_globe;
|
||||
}
|
||||
int iconColor = appMode.getIconColorInfo().getColor(nightMode);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, iconColor));
|
||||
int colorNoAlpha = appMode.getProfileColor(nightMode);
|
||||
|
||||
int colorNoAlpha = ContextCompat.getColor(app, iconColor);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(iconRes, colorNoAlpha));
|
||||
Drawable drawable = UiUtilities.getColoredSelectableDrawable(app, colorNoAlpha, 0.3f);
|
||||
|
||||
if (selected) {
|
||||
|
|
|
@ -77,11 +77,12 @@ public class SelectMultipleProfilesBottomSheet extends BasePreferenceBottomSheet
|
|||
View itemView = UiUtilities.getInflater(app, nightMode)
|
||||
.inflate(R.layout.bottom_sheet_item_with_descr_and_checkbox_56dp, null);
|
||||
|
||||
int profileColorId = profile.getIconColor(nightMode);
|
||||
int profileColor = profile.getIconColor(nightMode);
|
||||
int activeColorId = nightMode ?
|
||||
R.color.active_color_primary_dark : R.color.active_color_primary_light;
|
||||
int disableColorId = nightMode ?
|
||||
R.color.icon_color_default_dark : R.color.icon_color_default_light;
|
||||
int disableColor = ContextCompat.getColor(app, disableColorId);
|
||||
boolean enable = profile.isEnabled();
|
||||
|
||||
TextView tvTitle = itemView.findViewById(R.id.title);
|
||||
|
@ -97,8 +98,8 @@ public class SelectMultipleProfilesBottomSheet extends BasePreferenceBottomSheet
|
|||
tvDescription.setTextColor(ContextCompat.getColor(app, disableColorId));
|
||||
}
|
||||
|
||||
Drawable drawableIcon = app.getUIUtilities().getIcon(
|
||||
profile.getIconRes(), enable ? profileColorId : disableColorId);
|
||||
Drawable drawableIcon = app.getUIUtilities().getPaintedIcon(
|
||||
profile.getIconRes(), enable ? profileColor : disableColor);
|
||||
ivIcon.setImageDrawable(drawableIcon);
|
||||
UiUtilities.setupCompoundButton(nightMode, ContextCompat.getColor(app,
|
||||
enable ? activeColorId : disableColorId), compoundButton);
|
||||
|
|
|
@ -254,12 +254,13 @@ public class SelectProfileBottomSheet extends BasePreferenceBottomSheet {
|
|||
boolean isSelected = setupSelected && Algorithms.objectEquals(profile.getStringKey(), selectedItemKey);
|
||||
int iconColor;
|
||||
if (dialogMode == DialogMode.NAVIGATION_PROFILE) {
|
||||
iconColor = isSelected ? activeColorResId : iconDefaultColorResId;
|
||||
int iconColorResId = isSelected ? activeColorResId : iconDefaultColorResId;
|
||||
iconColor = ContextCompat.getColor(app, iconColorResId);
|
||||
} else {
|
||||
iconColor = profile.getIconColor(nightMode);
|
||||
}
|
||||
|
||||
Drawable drawableIcon = app.getUIUtilities().getIcon(profile.getIconRes(), iconColor);
|
||||
Drawable drawableIcon = app.getUIUtilities().getPaintedIcon(profile.getIconRes(), iconColor);
|
||||
ivIcon.setImageDrawable(drawableIcon);
|
||||
compoundButton.setChecked(isSelected);
|
||||
UiUtilities.setupCompoundButton(compoundButton, nightMode, UiUtilities.CompoundButtonType.GLOBAL);
|
||||
|
|
|
@ -6,19 +6,12 @@ import android.graphics.drawable.LayerDrawable;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
@ -26,6 +19,13 @@ import org.apache.commons.logging.Log;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
public class SelectProfileMenuAdapter extends AbstractProfileMenuAdapter<SelectProfileMenuAdapter.SelectProfileViewHolder> {
|
||||
|
||||
private static final Log LOG = PlatformUtil.getLog(SelectProfileMenuAdapter.class);
|
||||
|
@ -33,8 +33,8 @@ public class SelectProfileMenuAdapter extends AbstractProfileMenuAdapter<SelectP
|
|||
private List<Object> items = new ArrayList<>();
|
||||
private final OsmandApplication app;
|
||||
private ApplicationMode appMode;
|
||||
@ColorRes
|
||||
private int selectedIconColorRes;
|
||||
@ColorInt
|
||||
private int selectedIconColor;
|
||||
private boolean bottomButton;
|
||||
private String bottomButtonText;
|
||||
private static final String BUTTON_ITEM = "button_item";
|
||||
|
@ -53,9 +53,8 @@ public class SelectProfileMenuAdapter extends AbstractProfileMenuAdapter<SelectP
|
|||
this.bottomButton = !Algorithms.isEmpty(bottomButtonText);
|
||||
this.bottomButtonText = bottomButtonText;
|
||||
this.nightMode = nightMode;
|
||||
selectedIconColorRes = nightMode
|
||||
? R.color.active_color_primary_dark
|
||||
: R.color.active_color_primary_light;
|
||||
int selectedIconColorRes = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
|
||||
selectedIconColor = ContextCompat.getColor(app, selectedIconColorRes);
|
||||
}
|
||||
|
||||
public List<Object> getItems() {
|
||||
|
@ -100,11 +99,10 @@ public class SelectProfileMenuAdapter extends AbstractProfileMenuAdapter<SelectP
|
|||
holder.title.setText(item.toHumanString());
|
||||
holder.descr.setText(ProfileDataUtils.getAppModeDescription(app, item));
|
||||
|
||||
int profileColorResId = item.getIconColorInfo().getColor(nightMode);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(profileColorResId, selectedIconColorRes));
|
||||
int colorNoAlpha = item.getProfileColor(nightMode);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(item.getIconRes(), colorNoAlpha));
|
||||
|
||||
//set up cell color
|
||||
int colorNoAlpha = ContextCompat.getColor(app, profileColorResId);
|
||||
boolean selectedMode = appMode == item;
|
||||
Drawable drawable = UiUtilities.getColoredSelectableDrawable(app, colorNoAlpha, 0.3f);
|
||||
|
||||
|
@ -146,8 +144,8 @@ public class SelectProfileMenuAdapter extends AbstractProfileMenuAdapter<SelectP
|
|||
if (iconRes == 0 || iconRes == -1) {
|
||||
iconRes = R.drawable.ic_action_world_globe;
|
||||
}
|
||||
selectedIconColorRes = mode.getIconColorInfo().getColor(nightMode);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, selectedIconColorRes));
|
||||
selectedIconColor = mode.getProfileColor(nightMode);
|
||||
holder.icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(iconRes, selectedIconColor));
|
||||
}
|
||||
|
||||
class SelectProfileViewHolder extends ProfileAbstractViewHolder {
|
||||
|
|
|
@ -372,8 +372,7 @@ public class QuickActionListFragment extends BaseOsmAndFragment
|
|||
private void updateToolbarSwitch(final boolean isChecked) {
|
||||
OsmandApplication app = requireMyApplication();
|
||||
ApplicationMode appMode = app.getSettings().getApplicationMode();
|
||||
int profileColor = appMode.getIconColorInfo().getColor(nightMode);
|
||||
int color = ContextCompat.getColor(app, isChecked ? profileColor : R.color.preference_top_switch_off);
|
||||
int color = isChecked ? appMode.getProfileColor(nightMode) : ContextCompat.getColor(app, R.color.preference_top_switch_off);
|
||||
AndroidUtils.setBackground(toolbarSwitchContainer, new ColorDrawable(color));
|
||||
|
||||
SwitchCompat switchView = toolbarSwitchContainer.findViewById(R.id.switchWidget);
|
||||
|
|
|
@ -12,10 +12,12 @@ import android.widget.EditText;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
@ -161,8 +163,8 @@ public abstract class SwitchableAction<T> extends QuickAction {
|
|||
|
||||
OsmandApplication app = (OsmandApplication) context.getApplicationContext();
|
||||
|
||||
Drawable icon = app.getUIUtilities().getIcon(
|
||||
getItemIconRes(app, item), getItemIconColorRes(app, item));
|
||||
Drawable icon = app.getUIUtilities().getPaintedIcon(
|
||||
getItemIconRes(app, item), getItemIconColor(app, item));
|
||||
holder.icon.setImageDrawable(icon);
|
||||
|
||||
holder.title.setText(getItemName(context, item));
|
||||
|
@ -310,10 +312,11 @@ public abstract class SwitchableAction<T> extends QuickAction {
|
|||
return R.drawable.ic_map;
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
protected int getItemIconColorRes(OsmandApplication app, T item) {
|
||||
@ColorInt
|
||||
protected int getItemIconColor(OsmandApplication app, T item) {
|
||||
boolean nightMode = !app.getSettings().isLightContent();
|
||||
return nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light;
|
||||
int colorRes = nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light;
|
||||
return ContextCompat.getColor(app, colorRes);
|
||||
}
|
||||
|
||||
protected abstract
|
||||
|
|
|
@ -353,7 +353,6 @@ public class ShowHidePoiAction extends QuickAction {
|
|||
builder.setIcon(R.drawable.mx_user_defined);
|
||||
}
|
||||
|
||||
builder.setColor(ContextMenuItem.INVALID_ID);
|
||||
builder.setSkipPaintingWithoutColor(true);
|
||||
adapter.addItem(builder.createItem());
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.text.TextUtils;
|
|||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
@ -182,13 +183,14 @@ public class SwitchProfileAction extends SwitchableAction<String> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected int getItemIconColorRes(OsmandApplication app, String item) {
|
||||
@ColorInt
|
||||
protected int getItemIconColor(OsmandApplication app, String item) {
|
||||
ApplicationMode appMode = getModeForKey(item);
|
||||
if (appMode != null) {
|
||||
boolean nightMode = !app.getSettings().isLightContent();
|
||||
return appMode.getIconColorInfo().getColor(nightMode);
|
||||
return appMode.getProfileColor(nightMode);
|
||||
}
|
||||
return super.getItemIconColorRes(app, item);
|
||||
return super.getItemIconColor(app, item);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -13,7 +13,6 @@ import android.widget.Toast;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
|
@ -325,7 +324,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
|||
: mapActivity.getString(R.string.shared_string_none);
|
||||
item.setDescription(overlayMapDescr);
|
||||
item.setSelected(hasOverlayDescription);
|
||||
item.setColorRes(hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
@ -350,7 +349,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
|||
|
||||
item.setDescription(underlayMapDescr);
|
||||
item.setSelected(hasUnderlayDescription);
|
||||
item.setColorRes(hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
|
@ -383,7 +382,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
|||
.setId(OVERLAY_MAP)
|
||||
.setDescription(overlayMapDescr)
|
||||
.setSelected(hasOverlayDescription)
|
||||
.setColor(hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, hasOverlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_layer_top)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(listener)
|
||||
|
@ -399,7 +398,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
|||
.setId(UNDERLAY_MAP)
|
||||
.setDescription(underlayMapDescr)
|
||||
.setSelected(hasUnderlayDescription)
|
||||
.setColor(hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, hasUnderlayDescription ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_layer_bottom)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(listener)
|
||||
|
@ -485,7 +484,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
|
|||
final boolean[] selected = new boolean[downloaded.size()];
|
||||
boolean nightMode = isNightMode(activity);
|
||||
int themeResId = getThemeRes(activity);
|
||||
int selectedProfileColor = ContextCompat.getColor(app, app.getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode));
|
||||
int selectedProfileColor = app.getSettings().getApplicationMode().getProfileColor(nightMode);
|
||||
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createMultiChoiceAdapter(names, nightMode, selected, app,
|
||||
selectedProfileColor, themeResId, new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
@ -64,8 +65,8 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr
|
|||
private List<BottomSheetItemWithCompoundButton> compoundButtons = new ArrayList<>();
|
||||
|
||||
private boolean hideImpassableRoads;
|
||||
@ColorRes
|
||||
private int compoundButtonColorId = INVALID_ID;
|
||||
@ColorInt
|
||||
private Integer compoundButtonColor = null;
|
||||
private ApplicationMode appMode;
|
||||
|
||||
public void setHideImpassableRoads(boolean hideImpassableRoads) {
|
||||
|
@ -236,7 +237,7 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr
|
|||
|
||||
final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1];
|
||||
item[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(compoundButtonColorId)
|
||||
.setCompoundButtonColor(compoundButtonColor)
|
||||
.setChecked(selected)
|
||||
.setTitle(parameterName)
|
||||
.setLayoutId(R.layout.bottom_sheet_item_with_switch_no_icon)
|
||||
|
@ -254,8 +255,8 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr
|
|||
}
|
||||
}
|
||||
|
||||
public void setCompoundButtonColorId(@ColorRes int compoundButtonColorId) {
|
||||
this.compoundButtonColorId = compoundButtonColorId;
|
||||
public void setCompoundButtonColor(@ColorInt int compoundButtonColor) {
|
||||
this.compoundButtonColor = compoundButtonColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
@ -84,8 +85,8 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private RoutingHelper routingHelper;
|
||||
private RoutingOptionsHelper routingOptionsHelper;
|
||||
private ApplicationMode applicationMode;
|
||||
@ColorRes
|
||||
private int selectedModeColorId;
|
||||
@ColorInt
|
||||
private int selectedModeColor;
|
||||
private boolean currentMuteState;
|
||||
private boolean currentUseHeightState;
|
||||
private MapActivity mapActivity;
|
||||
|
@ -149,7 +150,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
if (dialogMode == null) {
|
||||
dialogMode = DialogMode.DIRECTIONS;
|
||||
}
|
||||
selectedModeColorId = applicationMode.getIconColorInfo().getColor(nightMode);
|
||||
selectedModeColor = applicationMode.getProfileColor(nightMode);
|
||||
voiceMuteChangeListener = new StateChangedListener<Boolean>() {
|
||||
@Override
|
||||
public void stateChanged(Boolean change) {
|
||||
|
@ -271,7 +272,6 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
|
||||
private BaseBottomSheetItem createMuteSoundItem(final LocalRoutingParameter optionsItem) {
|
||||
boolean active = !routingHelper.getVoiceRouter().isMuteForMode(applicationMode);
|
||||
int selectedModeColor = ContextCompat.getColor(app, selectedModeColorId);
|
||||
final View itemView = UiUtilities.getInflater(app, nightMode).inflate(
|
||||
R.layout.bottom_sheet_item_with_descr_switch_and_additional_button_56dp, null, false);
|
||||
final ImageView icon = itemView.findViewById(R.id.icon);
|
||||
|
@ -310,7 +310,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
Drawable drawable = app.getUIUtilities().getIcon(R.drawable.ic_action_settings,
|
||||
nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light);
|
||||
if (Build.VERSION.SDK_INT >= 21) {
|
||||
Drawable activeDrawable = app.getUIUtilities().getIcon(R.drawable.ic_action_settings, selectedModeColorId);
|
||||
Drawable activeDrawable = app.getUIUtilities().getPaintedIcon(R.drawable.ic_action_settings, selectedModeColor);
|
||||
drawable = AndroidUtils.createPressedStateListDrawable(drawable, activeDrawable);
|
||||
}
|
||||
voicePromptsBtnImage.setImageDrawable(drawable);
|
||||
|
@ -358,7 +358,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
|
||||
item[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(!active)
|
||||
.setCompoundButtonColorId(selectedModeColorId)
|
||||
.setCompoundButtonColor(selectedModeColor)
|
||||
.setDescription(getElevationDescription(parameter))
|
||||
.setIcon(getContentIcon(active ? parameter.getActiveIconId() : parameter.getDisabledIconId()))
|
||||
.setTitle(getString(R.string.routing_attr_height_obstacles_name))
|
||||
|
@ -387,7 +387,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private BaseBottomSheetItem createTimeConditionalRoutingItem(final LocalRoutingParameter optionsItem) {
|
||||
final BottomSheetItemWithCompoundButton[] timeConditionalRoutingItem = new BottomSheetItemWithCompoundButton[1];
|
||||
timeConditionalRoutingItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(selectedModeColorId)
|
||||
.setCompoundButtonColor(selectedModeColor)
|
||||
.setChecked(settings.ENABLE_TIME_CONDITIONAL_ROUTING.getModeValue(applicationMode))
|
||||
.setIcon(getContentIcon((optionsItem.getActiveIconId())))
|
||||
.setTitle(getString(R.string.temporary_conditional_routing))
|
||||
|
@ -433,7 +433,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private BaseBottomSheetItem createRouteSimulationItem(final LocalRoutingParameter optionsItem) {
|
||||
final BottomSheetItemWithCompoundButton[] simulateNavigationItem = new BottomSheetItemWithCompoundButton[1];
|
||||
simulateNavigationItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(selectedModeColorId)
|
||||
.setCompoundButtonColor(selectedModeColor)
|
||||
.setChecked(settings.simulateNavigation)
|
||||
.setIcon(getContentIcon(R.drawable.ic_action_start_navigation))
|
||||
.setTitle(getString(R.string.simulate_navigation))
|
||||
|
@ -470,7 +470,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
routingOptionsHelper.addNewRouteMenuParameter(applicationMode, optionsItem);
|
||||
AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment();
|
||||
avoidRoadsFragment.setTargetFragment(RouteOptionsBottomSheet.this, AvoidRoadsBottomSheetDialogFragment.REQUEST_CODE);
|
||||
avoidRoadsFragment.setCompoundButtonColorId(selectedModeColorId);
|
||||
avoidRoadsFragment.setCompoundButtonColor(selectedModeColor);
|
||||
avoidRoadsFragment.setApplicationMode(applicationMode);
|
||||
avoidRoadsFragment.show(mapActivity.getSupportFragmentManager(), AvoidRoadsBottomSheetDialogFragment.TAG);
|
||||
updateMenu();
|
||||
|
@ -492,7 +492,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment();
|
||||
avoidRoadsFragment.setHideImpassableRoads(true);
|
||||
avoidRoadsFragment.setTargetFragment(RouteOptionsBottomSheet.this, AvoidRoadsBottomSheetDialogFragment.REQUEST_CODE);
|
||||
avoidRoadsFragment.setCompoundButtonColorId(selectedModeColorId);
|
||||
avoidRoadsFragment.setCompoundButtonColor(selectedModeColor);
|
||||
avoidRoadsFragment.show(mapActivity.getSupportFragmentManager(), AvoidRoadsBottomSheetDialogFragment.TAG);
|
||||
updateMenu();
|
||||
}
|
||||
|
@ -565,7 +565,7 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
if (parameter != null) {
|
||||
final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1];
|
||||
BottomSheetItemWithCompoundButton.Builder builder = new BottomSheetItemWithCompoundButton.Builder();
|
||||
builder.setCompoundButtonColorId(selectedModeColorId);
|
||||
builder.setCompoundButtonColor(selectedModeColor);
|
||||
int iconId = -1;
|
||||
if (parameter.routingParameter != null || parameter instanceof RoutingOptionsHelper.OtherLocalRoutingParameter) {
|
||||
builder.setTitle(parameter.getText(mapActivity));
|
||||
|
|
|
@ -153,7 +153,7 @@ public class RoutingOptionsHelper {
|
|||
Context themedContext = UiUtilities.getThemedContext(mapActivity, nightMode);
|
||||
int themeRes = getThemeRes(app);
|
||||
ApplicationMode selectedAppMode = app.getRoutingHelper().getAppMode();
|
||||
int selectedModeColor = ContextCompat.getColor(app, selectedAppMode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = selectedAppMode.getProfileColor(nightMode);
|
||||
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
|
||||
entries, nightMode, selected, app, selectedModeColor, themeRes, new View.OnClickListener() {
|
||||
@Override
|
||||
|
@ -334,7 +334,7 @@ public class RoutingOptionsHelper {
|
|||
final boolean nightMode = isNightMode(app);
|
||||
Context themedContext = UiUtilities.getThemedContext(mapActivity, nightMode);
|
||||
ApplicationMode selectedAppMode = app.getRoutingHelper().getAppMode();
|
||||
final int selectedModeColor = ContextCompat.getColor(app, selectedAppMode.getIconColorInfo().getColor(nightMode));
|
||||
final int selectedModeColor = selectedAppMode.getProfileColor(nightMode);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
|
||||
final int layout = R.layout.list_menu_item_native_singlechoice;
|
||||
|
||||
|
|
|
@ -356,7 +356,7 @@ public class ShowAlongTheRouteBottomSheet extends MenuBottomSheetDialogFragment
|
|||
}
|
||||
}
|
||||
});
|
||||
int selectedProfileColor = ContextCompat.getColor(app, getAppMode().getIconColorInfo().getColor(isNightMode(app)));
|
||||
int selectedProfileColor = getAppMode().getProfileColor(isNightMode(app));
|
||||
UiUtilities.setupCompoundButton(nightMode, selectedProfileColor, compoundButton);
|
||||
|
||||
convertView.setOnClickListener(new View.OnClickListener() {
|
||||
|
@ -516,7 +516,7 @@ public class ShowAlongTheRouteBottomSheet extends MenuBottomSheetDialogFragment
|
|||
selected = i;
|
||||
}
|
||||
}
|
||||
int selectedProfileColor = ContextCompat.getColor(app, getAppMode().getIconColorInfo().getColor(nightMode));
|
||||
int selectedProfileColor = getAppMode().getProfileColor(nightMode);
|
||||
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
|
||||
names, nightMode, selected, app, selectedProfileColor, themeRes, new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package net.osmand.plus.settings.backend;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
@ -469,6 +471,15 @@ public class ApplicationMode {
|
|||
return app.getSettings().LOCATION_ICON.getModeValue(this);
|
||||
}
|
||||
|
||||
@ColorInt
|
||||
public int getProfileColor(boolean nightMode) {
|
||||
Integer customProfileColor = getCustomIconColor();
|
||||
if (customProfileColor != null) {
|
||||
return customProfileColor;
|
||||
}
|
||||
return ContextCompat.getColor(app, getIconColorInfo().getColor(nightMode));
|
||||
}
|
||||
|
||||
public void setLocationIcon(LocationIcon locationIcon) {
|
||||
if (locationIcon != null) {
|
||||
app.getSettings().LOCATION_ICON.setModeValue(this, locationIcon);
|
||||
|
@ -485,6 +496,28 @@ public class ApplicationMode {
|
|||
}
|
||||
}
|
||||
|
||||
public List<String> getCustomIconColors() {
|
||||
return app.getSettings().CUSTOM_ICON_COLORS.getStringsListForProfile(this);
|
||||
}
|
||||
|
||||
public void setCustomIconColors(List<String> customColors) {
|
||||
app.getSettings().CUSTOM_ICON_COLORS.setModeValues(this, customColors);
|
||||
}
|
||||
|
||||
public Integer getCustomIconColor() {
|
||||
try {
|
||||
String customColor = app.getSettings().CUSTOM_ICON_COLOR.getModeValue(this);
|
||||
return Algorithms.isEmpty(customColor) ? null : Algorithms.parseColor(customColor);
|
||||
} catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void setCustomIconColor(Integer customIconColor) {
|
||||
String valueToSave = customIconColor == null ? null : Algorithms.colorToString(customIconColor);
|
||||
app.getSettings().CUSTOM_ICON_COLOR.setModeValue(this, valueToSave);
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return app.getSettings().APP_MODE_ORDER.getModeValue(this);
|
||||
}
|
||||
|
@ -582,6 +615,7 @@ public class ApplicationMode {
|
|||
mode.setRoutingProfile(builder.routingProfile);
|
||||
mode.setRouteService(builder.routeService);
|
||||
mode.setIconColor(builder.iconColor);
|
||||
mode.setCustomIconColor(builder.customIconColor);
|
||||
mode.setLocationIcon(builder.locationIcon);
|
||||
mode.setNavigationIcon(builder.navigationIcon);
|
||||
mode.setOrder(builder.order);
|
||||
|
@ -604,6 +638,7 @@ public class ApplicationMode {
|
|||
builder.setUserProfileName(modeBean.userProfileName);
|
||||
builder.setIconResName(modeBean.iconName);
|
||||
builder.setIconColor(modeBean.iconColor);
|
||||
builder.setCustomIconColor(modeBean.customIconColor);
|
||||
builder.setRoutingProfile(modeBean.routingProfile);
|
||||
builder.setRouteService(modeBean.routeService);
|
||||
builder.setLocationIcon(modeBean.locIcon);
|
||||
|
@ -623,6 +658,7 @@ public class ApplicationMode {
|
|||
mb.stringKey = stringKey;
|
||||
mb.userProfileName = getUserProfileName();
|
||||
mb.iconColor = getIconColorInfo();
|
||||
mb.customIconColor = getCustomIconColor();
|
||||
mb.iconName = getIconName();
|
||||
mb.parent = parentAppMode != null ? parentAppMode.getStringKey() : null;
|
||||
mb.routeService = getRouteService();
|
||||
|
@ -699,6 +735,7 @@ public class ApplicationMode {
|
|||
private String routingProfile;
|
||||
private String iconResName;
|
||||
private ProfileIconColors iconColor;
|
||||
private Integer customIconColor;
|
||||
private LocationIcon locationIcon;
|
||||
private NavigationIcon navigationIcon;
|
||||
private int order = -1;
|
||||
|
@ -722,6 +759,7 @@ public class ApplicationMode {
|
|||
applicationMode.setRouteService(routeService);
|
||||
applicationMode.setRoutingProfile(routingProfile);
|
||||
applicationMode.setIconResName(iconResName);
|
||||
applicationMode.setCustomIconColor(customIconColor);
|
||||
applicationMode.setIconColor(iconColor);
|
||||
applicationMode.setLocationIcon(locationIcon);
|
||||
applicationMode.setNavigationIcon(navigationIcon);
|
||||
|
@ -770,6 +808,11 @@ public class ApplicationMode {
|
|||
return this;
|
||||
}
|
||||
|
||||
public ApplicationModeBuilder setCustomIconColor(Integer customIconColor) {
|
||||
this.customIconColor = customIconColor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ApplicationModeBuilder setOrder(int order) {
|
||||
this.order = order;
|
||||
return this;
|
||||
|
@ -798,6 +841,8 @@ public class ApplicationMode {
|
|||
@Expose
|
||||
public ProfileIconColors iconColor = ProfileIconColors.DEFAULT;
|
||||
@Expose
|
||||
public Integer customIconColor = null;
|
||||
@Expose
|
||||
public String routingProfile = null;
|
||||
@Expose
|
||||
public RouteService routeService = RouteService.OSMAND;
|
||||
|
|
|
@ -983,6 +983,10 @@ public class OsmandSettings {
|
|||
public final CommonPreference<ProfileIconColors> ICON_COLOR = new EnumStringPreference<>(this,
|
||||
"app_mode_icon_color", ProfileIconColors.DEFAULT, ProfileIconColors.values()).makeProfile().cache();
|
||||
|
||||
public final ListStringPreference CUSTOM_ICON_COLORS = (ListStringPreference) new ListStringPreference(this, "custom_icon_colors", null, ",").makeProfile().cache();
|
||||
|
||||
public final CommonPreference<String> CUSTOM_ICON_COLOR = new StringPreference(this, "custom_icon_color", null).makeProfile().cache();
|
||||
|
||||
public final CommonPreference<String> USER_PROFILE_NAME = new StringPreference(this, "user_profile_name", "").makeProfile().cache();
|
||||
|
||||
public final CommonPreference<String> PARENT_APP_MODE = new StringPreference(this, "parent_app_mode", null).makeProfile().cache();
|
||||
|
|
|
@ -301,6 +301,7 @@ public class ProfileSettingsItem extends OsmandSettingsItem {
|
|||
OsmandSettings settings = app.getSettings();
|
||||
return new String[] {
|
||||
settings.ICON_COLOR.getId(),
|
||||
settings.CUSTOM_ICON_COLOR.getId(),
|
||||
settings.ICON_RES_NAME.getId(),
|
||||
settings.PARENT_APP_MODE.getId(),
|
||||
settings.ROUTING_PROFILE.getId(),
|
||||
|
|
|
@ -171,7 +171,7 @@ public class AnnouncementTimeBottomSheet extends BasePreferenceBottomSheet
|
|||
}
|
||||
|
||||
private void setProfileColorToSeekBar() {
|
||||
int color = ContextCompat.getColor(app, getAppMode().getIconColorInfo().getColor(nightMode));
|
||||
int color = getAppMode().getProfileColor(nightMode);
|
||||
|
||||
LayerDrawable seekBarProgressLayer =
|
||||
(LayerDrawable) ContextCompat.getDrawable(app, R.drawable.seekbar_progress_announcement_time);
|
||||
|
|
|
@ -103,7 +103,7 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
|
|||
})
|
||||
.create();
|
||||
if (isProfileDependent()) {
|
||||
preferenceBtn[0].setCompoundButtonColorId(getAppMode().getIconColorInfo().getColor(nightMode));
|
||||
preferenceBtn[0].setCompoundButtonColor(getAppMode().getProfileColor(nightMode));
|
||||
}
|
||||
items.add(preferenceBtn[0]);
|
||||
|
||||
|
@ -133,8 +133,7 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
|
|||
Context themedCtx = UiUtilities.getThemedContext(app, nightMode);
|
||||
View buttonView = customView.findViewById(R.id.button_container);
|
||||
|
||||
int colorRes = mode.getIconColorInfo().getColor(nightMode);
|
||||
int color = checked ? ContextCompat.getColor(themedCtx, colorRes) : AndroidUtils.getColorFromAttr(themedCtx, R.attr.divider_color_basic);
|
||||
int color = checked ? mode.getProfileColor(nightMode) : AndroidUtils.getColorFromAttr(themedCtx, R.attr.divider_color_basic);
|
||||
int bgColor = UiUtilities.getColorWithAlpha(color, checked ? 0.1f : 0.5f);
|
||||
int selectedColor = UiUtilities.getColorWithAlpha(color, checked ? 0.3f : 0.5f);
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.os.Bundle;
|
|||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
@ -65,6 +66,7 @@ public class ElevationDateBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private int checkedColor;
|
||||
private int uncheckedColor;
|
||||
private int disabledColor;
|
||||
@ColorInt
|
||||
private int appModeColor;
|
||||
|
||||
@Override
|
||||
|
@ -101,7 +103,7 @@ public class ElevationDateBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
|
||||
on = getString(R.string.shared_string_enabled);
|
||||
off = getString(R.string.shared_string_disabled);
|
||||
appModeColor = appMode.getIconColorInfo().getColor(nightMode);
|
||||
appModeColor = appMode.getProfileColor(nightMode);
|
||||
activeColor = AndroidUtils.resolveAttribute(themedCtx, R.attr.active_color_basic);
|
||||
disabledColor = AndroidUtils.resolveAttribute(themedCtx, android.R.attr.textColorSecondary);
|
||||
checkedColor = (nightMode ? app.getResources().getColor(R.color.text_color_primary_dark) : app.getResources().getColor(R.color.text_color_primary_light));
|
||||
|
@ -122,7 +124,7 @@ public class ElevationDateBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
private void createUseHeightButton(Context context) {
|
||||
boolean checked = useHeightPref.getModeValue(appMode);
|
||||
useHeightButton = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setCompoundButtonColorId(appModeColor)
|
||||
.setCompoundButtonColor(appModeColor)
|
||||
.setChecked(checked)
|
||||
.setTitle(checked ? on : off)
|
||||
.setTitleColorId(checked ? activeColor : disabledColor)
|
||||
|
|
|
@ -89,7 +89,7 @@ public class MultiSelectPreferencesBottomSheet extends BasePreferenceBottomSheet
|
|||
.setTag(prefId)
|
||||
.create();
|
||||
if (isProfileDependent()) {
|
||||
item[0].setCompoundButtonColorId(getAppMode().getIconColorInfo().getColor(nightMode));
|
||||
item[0].setCompoundButtonColor(getAppMode().getProfileColor(nightMode));
|
||||
}
|
||||
items.add(item[0]);
|
||||
}
|
||||
|
|
|
@ -84,8 +84,7 @@ public class RecalculateRouteInDeviationBottomSheet extends BooleanPreferenceBot
|
|||
entryValues = new Float[]{9.1f, 18.3f, 30.5f, 45.7f, 91.5f, 183.0f, 482.0f, 965.0f, 1609.0f};
|
||||
}
|
||||
|
||||
final int appModeColorId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
final int appModeColor = ContextCompat.getColor(themedCtx, appModeColorId);
|
||||
final int appModeColor = appMode.getProfileColor(nightMode);
|
||||
final int activeColor = AndroidUtils.resolveAttribute(themedCtx, R.attr.active_color_basic);
|
||||
final int disabledColor = AndroidUtils.resolveAttribute(themedCtx, android.R.attr.textColorSecondary);
|
||||
|
||||
|
@ -108,7 +107,7 @@ public class RecalculateRouteInDeviationBottomSheet extends BooleanPreferenceBot
|
|||
final BottomSheetItemWithCompoundButton[] preferenceBtn = new BottomSheetItemWithCompoundButton[1];
|
||||
preferenceBtn[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(enabled)
|
||||
.setCompoundButtonColorId(appModeColorId)
|
||||
.setCompoundButtonColor(appModeColor)
|
||||
.setTitle(enabled ? on : off)
|
||||
.setTitleColorId(enabled ? activeColor : disabledColor)
|
||||
.setCustomView(getCustomButtonView(app, getAppMode(), enabled, nightMode))
|
||||
|
|
|
@ -38,18 +38,17 @@ public class ResetProfilePrefsBottomSheet extends BasePreferenceBottomSheet {
|
|||
String title = getString(customProfile ? R.string.restore_all_profile_settings : R.string.reset_all_profile_settings);
|
||||
items.add(new TitleItem(title));
|
||||
|
||||
int profileColor = mode.getIconColorInfo().getColor(nightMode);
|
||||
int colorNoAlpha = ContextCompat.getColor(ctx, profileColor);
|
||||
int colorNoAlpha = mode.getProfileColor(nightMode);
|
||||
|
||||
Drawable backgroundIcon = UiUtilities.getColoredSelectableDrawable(ctx, colorNoAlpha, 0.3f);
|
||||
Drawable[] layers = {new ColorDrawable(UiUtilities.getColorWithAlpha(colorNoAlpha, 0.10f)), backgroundIcon};
|
||||
|
||||
BaseBottomSheetItem profileItem = new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(true)
|
||||
.setCompoundButtonColorId(profileColor)
|
||||
.setButtonTintList(ColorStateList.valueOf(getResolvedColor(profileColor)))
|
||||
.setCompoundButtonColor(colorNoAlpha)
|
||||
.setButtonTintList(ColorStateList.valueOf(colorNoAlpha))
|
||||
.setDescription(ProfileDataUtils.getAppModeDescription(ctx, mode))
|
||||
.setIcon(getIcon(mode.getIconRes(), profileColor))
|
||||
.setIcon(getPaintedIcon(mode.getIconRes(), colorNoAlpha))
|
||||
.setTitle(mode.toHumanString())
|
||||
.setBackground(new LayerDrawable(layers))
|
||||
.setLayoutId(R.layout.preference_profile_item_with_radio_btn)
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.view.View;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
|
@ -69,8 +70,11 @@ public class SingleSelectPreferenceBottomSheet extends BasePreferenceBottomSheet
|
|||
final BaseBottomSheetItem[] preferenceItem = new BottomSheetItemWithCompoundButton[1];
|
||||
preferenceItem[0] = new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(i == selectedEntryIndex)
|
||||
.setButtonTintList(AndroidUtils.createCheckedColorStateList(ctx, R.color.icon_color_default_light,
|
||||
isProfileDependent() ? getAppMode().getIconColorInfo().getColor(nightMode) : getActiveColorId()))
|
||||
.setButtonTintList(AndroidUtils.createCheckedColorIntStateList(
|
||||
ContextCompat.getColor(ctx,R.color.icon_color_default_light),
|
||||
isProfileDependent() ?
|
||||
getAppMode().getProfileColor(nightMode) :
|
||||
ContextCompat.getColor(ctx, getActiveColorId())))
|
||||
.setTitle(entries[i])
|
||||
.setTag(i)
|
||||
.setLayoutId(R.layout.bottom_sheet_item_with_radio_btn_left)
|
||||
|
|
|
@ -118,8 +118,7 @@ public class WakeTimeBottomSheet extends BasePreferenceBottomSheet {
|
|||
}
|
||||
});
|
||||
|
||||
int appModeColorId = getAppMode().getIconColorInfo().getColor(nightMode);
|
||||
int appModeColor = ContextCompat.getColor(themedCtx, appModeColorId);
|
||||
int appModeColor = getAppMode().getProfileColor(nightMode);
|
||||
UiUtilities.setupSlider(slider, nightMode, appModeColor, true);
|
||||
|
||||
items.add(new BaseBottomSheetItem.Builder()
|
||||
|
|
|
@ -680,12 +680,9 @@ public abstract class BaseSettingsFragment extends PreferenceFragmentCompat impl
|
|||
|
||||
@ColorInt
|
||||
protected int getActiveProfileColor() {
|
||||
return ContextCompat.getColor(app, getActiveProfileColorRes());
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
protected int getActiveProfileColorRes() {
|
||||
return isProfileDependent() ? getSelectedAppMode().getIconColorInfo().getColor(isNightMode()) : R.color.icon_color_active_light;
|
||||
return isProfileDependent() ?
|
||||
getSelectedAppMode().getProfileColor(isNightMode()) :
|
||||
ContextCompat.getColor(app, nightMode ? R.color.icon_color_active_dark : R.color.icon_color_active_light);
|
||||
}
|
||||
|
||||
@ColorRes
|
||||
|
@ -801,7 +798,7 @@ public abstract class BaseSettingsFragment extends PreferenceFragmentCompat impl
|
|||
|
||||
protected Drawable getActiveIcon(@DrawableRes int id) {
|
||||
UiUtilities cache = getIconsCache();
|
||||
return cache != null ? cache.getIcon(id, getActiveProfileColorRes()) : null;
|
||||
return cache != null ? cache.getPaintedIcon(id, getActiveProfileColor()) : null;
|
||||
}
|
||||
|
||||
protected Drawable getIcon(@DrawableRes int id, @ColorRes int colorId) {
|
||||
|
@ -829,7 +826,8 @@ public abstract class BaseSettingsFragment extends PreferenceFragmentCompat impl
|
|||
Drawable icon = AndroidUtils.createEnabledStateListDrawable(disabled, enabled);
|
||||
|
||||
if (Build.VERSION.SDK_INT < 21) {
|
||||
ColorStateList colorStateList = AndroidUtils.createEnabledColorStateList(app, R.color.icon_color_default_light, getActiveProfileColorRes());
|
||||
int defaultColor = ContextCompat.getColor(app, nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light);
|
||||
ColorStateList colorStateList = AndroidUtils.createEnabledColorIntStateList(defaultColor, getActiveProfileColor());
|
||||
icon = DrawableCompat.wrap(icon);
|
||||
DrawableCompat.setTintList(icon, colorStateList);
|
||||
return icon;
|
||||
|
|
|
@ -6,9 +6,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.IndexConstants;
|
||||
import net.osmand.PlatformUtil;
|
||||
|
@ -33,12 +30,16 @@ import net.osmand.plus.settings.backend.ApplicationMode;
|
|||
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.FileSubtype;
|
||||
|
||||
public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
@ -121,7 +122,10 @@ public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView
|
|||
}
|
||||
int profileIconRes = AndroidUtils.getDrawableId(app, modeBean.iconName);
|
||||
ProfileIconColors iconColor = modeBean.iconColor;
|
||||
itemHolder.icon.setImageDrawable(uiUtilities.getIcon(profileIconRes, iconColor.getColor(nightMode)));
|
||||
Integer customIconColor = modeBean.customIconColor;
|
||||
int actualIconColor = customIconColor != null ?
|
||||
customIconColor : ContextCompat.getColor(app, iconColor.getColor(nightMode));
|
||||
itemHolder.icon.setImageDrawable(uiUtilities.getPaintedIcon(profileIconRes, actualIconColor));
|
||||
} else if (currentItem instanceof QuickAction) {
|
||||
QuickAction action = (QuickAction) currentItem;
|
||||
itemHolder.title.setText(action.getName(app));
|
||||
|
|
|
@ -6,13 +6,6 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.widget.CompoundButtonCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.GPXUtilities.GPXTrackAnalysis;
|
||||
import net.osmand.IndexConstants;
|
||||
|
@ -61,13 +54,20 @@ import net.osmand.plus.settings.fragments.ExportSettingsAdapter.OnItemSelectedLi
|
|||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.view.ThreeStateCheckbox;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.widget.CompoundButtonCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.CHECKED;
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.MISC;
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.UNCHECKED;
|
||||
|
@ -306,7 +306,10 @@ public class ExportItemsBottomSheet extends MenuBottomSheetDialogFragment {
|
|||
}
|
||||
int profileIconRes = AndroidUtils.getDrawableId(app, modeBean.iconName);
|
||||
ProfileIconColors iconColor = modeBean.iconColor;
|
||||
builder.setIcon(uiUtilities.getIcon(profileIconRes, iconColor.getColor(nightMode)));
|
||||
Integer customIconColor = modeBean.customIconColor;
|
||||
int actualIconColor = customIconColor != null ?
|
||||
customIconColor : ContextCompat.getColor(app, iconColor.getColor(nightMode));
|
||||
builder.setIcon(uiUtilities.getPaintedIcon(profileIconRes, actualIconColor));
|
||||
} else if (object instanceof QuickAction) {
|
||||
QuickAction quickAction = (QuickAction) object;
|
||||
builder.setTitle(quickAction.getName(app));
|
||||
|
|
|
@ -142,7 +142,6 @@ public class GlobalSettingsFragment extends BaseSettingsFragment
|
|||
|
||||
private void setupDefaultAppModePref() {
|
||||
Preference defaultApplicationMode = (Preference) findPreference(settings.DEFAULT_APPLICATION_MODE.getId());
|
||||
int iconColor = settings.getApplicationMode().getIconColorInfo().getColor(isNightMode());
|
||||
String summary;
|
||||
int iconId;
|
||||
if (settings.USE_LAST_APPLICATION_MODE_BY_DEFAULT.get()) {
|
||||
|
@ -153,7 +152,7 @@ public class GlobalSettingsFragment extends BaseSettingsFragment
|
|||
summary = appMode.toHumanString();
|
||||
iconId = appMode.getIconRes();
|
||||
}
|
||||
defaultApplicationMode.setIcon(getIcon(iconId, iconColor));
|
||||
defaultApplicationMode.setIcon(getPaintedIcon(iconId, settings.getApplicationMode().getProfileColor(isNightMode())));
|
||||
defaultApplicationMode.setSummary(summary);
|
||||
}
|
||||
|
||||
|
|
|
@ -87,8 +87,7 @@ public class MainSettingsFragment extends BaseSettingsFragment implements OnSele
|
|||
if (CONFIGURE_PROFILE.equals(key)) {
|
||||
View selectedProfile = holder.itemView.findViewById(R.id.selectable_list_item);
|
||||
if (selectedProfile != null) {
|
||||
int activeProfileColorId = getSelectedAppMode().getIconColorInfo().getColor(isNightMode());
|
||||
int activeProfileColor = ContextCompat.getColor(app, activeProfileColorId);
|
||||
int activeProfileColor = getSelectedAppMode().getProfileColor(isNightMode());
|
||||
Drawable backgroundDrawable = new ColorDrawable(UiUtilities.getColorWithAlpha(activeProfileColor, 0.15f));
|
||||
AndroidUtils.setBackground(selectedProfile, backgroundDrawable);
|
||||
}
|
||||
|
@ -212,7 +211,7 @@ public class MainSettingsFragment extends BaseSettingsFragment implements OnSele
|
|||
|
||||
private Drawable getAppProfilesIcon(ApplicationMode applicationMode, boolean appProfileEnabled) {
|
||||
int iconResId = applicationMode.getIconRes();
|
||||
return appProfileEnabled ? app.getUIUtilities().getIcon(applicationMode.getIconRes(), applicationMode.getIconColorInfo().getColor(isNightMode()))
|
||||
return appProfileEnabled ? app.getUIUtilities().getPaintedIcon(applicationMode.getIconRes(), applicationMode.getProfileColor(isNightMode()))
|
||||
: getIcon(iconResId, isNightMode() ? R.color.icon_color_secondary_dark : R.color.icon_color_secondary_light);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,41 @@ import android.widget.FrameLayout;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.IndexConstants;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.UiUtilities.DialogButtonType;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.profiles.LocationIcon;
|
||||
import net.osmand.plus.profiles.NavigationIcon;
|
||||
import net.osmand.plus.profiles.ProfileIconColors;
|
||||
import net.osmand.plus.profiles.ProfileIcons;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet.DialogMode;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet.OnSelectProfileCallback;
|
||||
import net.osmand.plus.routepreparationmenu.cards.BaseCard;
|
||||
import net.osmand.plus.routepreparationmenu.cards.BaseCard.CardListener;
|
||||
import net.osmand.plus.routing.RouteProvider;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
||||
import net.osmand.plus.track.ColorsCard;
|
||||
import net.osmand.plus.track.CustomColorBottomSheet.ColorPickerListener;
|
||||
import net.osmand.plus.widgets.FlowLayout;
|
||||
import net.osmand.plus.widgets.OsmandTextFieldBoxes;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
@ -37,39 +71,11 @@ import androidx.preference.Preference;
|
|||
import androidx.preference.PreferenceViewHolder;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.IndexConstants;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.UiUtilities.DialogButtonType;
|
||||
import net.osmand.plus.profiles.LocationIcon;
|
||||
import net.osmand.plus.profiles.NavigationIcon;
|
||||
import net.osmand.plus.profiles.ProfileIconColors;
|
||||
import net.osmand.plus.profiles.ProfileIcons;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet.DialogMode;
|
||||
import net.osmand.plus.profiles.SelectProfileBottomSheet.OnSelectProfileCallback;
|
||||
import net.osmand.plus.routing.RouteProvider;
|
||||
import net.osmand.plus.widgets.FlowLayout;
|
||||
import net.osmand.plus.widgets.OsmandTextFieldBoxes;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_SETTINGS_ID;
|
||||
import static net.osmand.plus.profiles.SelectProfileBottomSheet.PROFILES_LIST_UPDATED_ARG;
|
||||
import static net.osmand.plus.profiles.SelectProfileBottomSheet.PROFILE_KEY_ARG;
|
||||
|
||||
public class ProfileAppearanceFragment extends BaseSettingsFragment implements OnSelectProfileCallback {
|
||||
public class ProfileAppearanceFragment extends BaseSettingsFragment implements OnSelectProfileCallback, CardListener, ColorPickerListener {
|
||||
|
||||
private static final Log LOG = PlatformUtil.getLog(ProfileAppearanceFragment.class);
|
||||
|
||||
|
@ -90,6 +96,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
private static final String PROFILE_STRINGKEY_KEY = "profile_stringkey_key";
|
||||
private static final String PROFILE_ICON_RES_KEY = "profile_icon_res_key";
|
||||
private static final String PROFILE_COLOR_KEY = "profile_color_key";
|
||||
private static final String PROFILE_CUSTOM_COLOR_KEY = "profile_custom_color_key";
|
||||
private static final String PROFILE_PARENT_KEY = "profile_parent_key";
|
||||
private static final String PROFILE_LOCATION_ICON_KEY = "profile_location_icon_key";
|
||||
private static final String PROFILE_NAVIGATION_ICON_KEY = "profile_navigation_icon_key";
|
||||
|
@ -105,7 +112,8 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
private ApplicationProfileObject profile;
|
||||
private ApplicationProfileObject changedProfile;
|
||||
private EditText profileName;
|
||||
private FlowLayout colorItems;
|
||||
private TextView colorName;
|
||||
private ColorsCard colorsCard;
|
||||
private FlowLayout iconItems;
|
||||
private FlowLayout locationIconItems;
|
||||
private FlowLayout navIconItems;
|
||||
|
@ -145,6 +153,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
changedProfile.name = profile.name;
|
||||
}
|
||||
changedProfile.color = profile.color;
|
||||
changedProfile.customColor = profile.customColor;
|
||||
changedProfile.iconRes = profile.iconRes;
|
||||
changedProfile.routingProfile = profile.routingProfile;
|
||||
changedProfile.routeService = profile.routeService;
|
||||
|
@ -164,6 +173,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
profile.parent = baseModeForNewProfile.getParent();
|
||||
profile.name = baseModeForNewProfile.toHumanString();
|
||||
profile.color = baseModeForNewProfile.getIconColorInfo();
|
||||
profile.customColor = baseModeForNewProfile.getCustomIconColor();
|
||||
profile.iconRes = baseModeForNewProfile.getIconRes();
|
||||
profile.routingProfile = baseModeForNewProfile.getRoutingProfile();
|
||||
profile.routeService = baseModeForNewProfile.getRouteService();
|
||||
|
@ -300,6 +310,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
outState.putString(PROFILE_STRINGKEY_KEY, changedProfile.stringKey);
|
||||
outState.putInt(PROFILE_ICON_RES_KEY, changedProfile.iconRes);
|
||||
outState.putSerializable(PROFILE_COLOR_KEY, changedProfile.color);
|
||||
outState.putInt(PROFILE_CUSTOM_COLOR_KEY, changedProfile.customColor);
|
||||
if (changedProfile.parent != null) {
|
||||
outState.putString(PROFILE_PARENT_KEY, changedProfile.parent.getStringKey());
|
||||
}
|
||||
|
@ -314,6 +325,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
changedProfile.stringKey = savedInstanceState.getString(PROFILE_STRINGKEY_KEY);
|
||||
changedProfile.iconRes = savedInstanceState.getInt(PROFILE_ICON_RES_KEY);
|
||||
changedProfile.color = (ProfileIconColors) savedInstanceState.getSerializable(PROFILE_COLOR_KEY);
|
||||
changedProfile.customColor = savedInstanceState.getInt(PROFILE_CUSTOM_COLOR_KEY);
|
||||
String parentStringKey = savedInstanceState.getString(PROFILE_PARENT_KEY);
|
||||
changedProfile.parent = ApplicationMode.valueOfStringKey(parentStringKey, null);
|
||||
isBaseProfileImported = savedInstanceState.getBoolean(IS_BASE_PROFILE_IMPORTED);
|
||||
|
@ -330,7 +342,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
View profileButton = view.findViewById(R.id.profile_button);
|
||||
if (profileButton != null) {
|
||||
int iconColor = ContextCompat.getColor(app, changedProfile.color.getColor(isNightMode()));
|
||||
int iconColor = changedProfile.getActualColor();
|
||||
AndroidUtils.setBackground(profileButton, UiUtilities.tintDrawable(AppCompatResources.getDrawable(app,
|
||||
R.drawable.circle_background_light), UiUtilities.getColorWithAlpha(iconColor, 0.1f)));
|
||||
ImageView profileIcon = view.findViewById(R.id.profile_icon);
|
||||
|
@ -408,14 +420,11 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
}
|
||||
});
|
||||
} else if (SELECT_COLOR.equals(preference.getKey())) {
|
||||
colorName = holder.itemView.findViewById(R.id.summary);
|
||||
colorName.setTextColor(ContextCompat.getColor(app, R.color.preference_category_title));
|
||||
} else if (COLOR_ITEMS.equals(preference.getKey())) {
|
||||
colorItems = (FlowLayout) holder.findViewById(R.id.color_items);
|
||||
colorItems.removeAllViews();
|
||||
for (ProfileIconColors color : ProfileIconColors.values()) {
|
||||
View colorItem = createColorItemView(color, colorItems);
|
||||
colorItems.addView(colorItem, new FlowLayout.LayoutParams(0, 0));
|
||||
}
|
||||
updateColorSelector(changedProfile.color);
|
||||
createColorsCard(holder);
|
||||
} else if (ICON_ITEMS.equals(preference.getKey())) {
|
||||
iconItems = (FlowLayout) holder.findViewById(R.id.color_items);
|
||||
iconItems.removeAllViews();
|
||||
|
@ -462,60 +471,29 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
}
|
||||
|
||||
private View createColorItemView(final ProfileIconColors colorRes, ViewGroup rootView) {
|
||||
FrameLayout colorItemView = (FrameLayout) UiUtilities.getInflater(getContext(), isNightMode())
|
||||
.inflate(R.layout.preference_circle_item, rootView, false);
|
||||
ImageView coloredCircle = colorItemView.findViewById(R.id.background);
|
||||
AndroidUtils.setBackground(coloredCircle,
|
||||
UiUtilities.tintDrawable(AppCompatResources.getDrawable(app, R.drawable.circle_background_light),
|
||||
ContextCompat.getColor(app, colorRes.getColor(isNightMode()))));
|
||||
coloredCircle.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (colorRes != changedProfile.color) {
|
||||
updateColorSelector(colorRes);
|
||||
setVerticalScrollBarEnabled(false);
|
||||
updatePreference(findPreference(MASTER_PROFILE));
|
||||
updatePreference(findPreference(LOCATION_ICON_ITEMS));
|
||||
updatePreference(findPreference(NAV_ICON_ITEMS));
|
||||
setVerticalScrollBarEnabled(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ImageView outlineCircle = colorItemView.findViewById(R.id.outline);
|
||||
ImageView checkMark = colorItemView.findViewById(R.id.checkMark);
|
||||
GradientDrawable gradientDrawable = (GradientDrawable) AppCompatResources.getDrawable(app, R.drawable.circle_contour_bg_light);
|
||||
if (gradientDrawable != null) {
|
||||
gradientDrawable.setStroke(AndroidUtils.dpToPx(app, 2),
|
||||
UiUtilities.getColorWithAlpha(ContextCompat.getColor(app, colorRes.getColor(isNightMode())), 0.3f));
|
||||
outlineCircle.setImageDrawable(gradientDrawable);
|
||||
private void createColorsCard(PreferenceViewHolder holder) {
|
||||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity == null) {
|
||||
return;
|
||||
}
|
||||
checkMark.setVisibility(View.GONE);
|
||||
outlineCircle.setVisibility(View.GONE);
|
||||
colorItemView.setTag(colorRes);
|
||||
return colorItemView;
|
||||
}
|
||||
FlowLayout colorsCardContainer = (FlowLayout) holder.findViewById(R.id.color_items);
|
||||
colorsCardContainer.removeAllViews();
|
||||
|
||||
private void updateColorSelector(ProfileIconColors color) {
|
||||
View colorItem = colorItems.findViewWithTag(changedProfile.color);
|
||||
colorItem.findViewById(R.id.outline).setVisibility(View.GONE);
|
||||
colorItem.findViewById(R.id.checkMark).setVisibility(View.GONE);
|
||||
colorItem = colorItems.findViewWithTag(color);
|
||||
colorItem.findViewById(R.id.outline).setVisibility(View.VISIBLE);
|
||||
colorItem.findViewById(R.id.checkMark).setVisibility(View.VISIBLE);
|
||||
changedProfile.color = color;
|
||||
if (iconItems != null) {
|
||||
updateIconColor(changedProfile.iconRes);
|
||||
int selectedColor = changedProfile.getActualColor();
|
||||
List<Integer> colors = new ArrayList<>();
|
||||
for (ProfileIconColors color : ProfileIconColors.values()) {
|
||||
colors.add(ContextCompat.getColor(app, color.getColor(isNightMode())));
|
||||
}
|
||||
updateProfileNameAppearance();
|
||||
updateProfileButton();
|
||||
colorsCard = new ColorsCard(mapActivity, selectedColor, this, colors, app.getSettings().CUSTOM_ICON_COLORS, getSelectedAppMode());
|
||||
colorsCard.setListener(this);
|
||||
colorsCardContainer.addView(colorsCard.build(app));
|
||||
updateColorName();
|
||||
}
|
||||
|
||||
private void updateProfileNameAppearance() {
|
||||
if (profileName != null) {
|
||||
if (profileName.isFocusable() && profileName.isFocusableInTouchMode()) {
|
||||
int selectedColor = ContextCompat.getColor(app, changedProfile.color.getColor(isNightMode()));
|
||||
int selectedColor = changedProfile.getActualColor();
|
||||
profileNameOtfb.setPrimaryColor(selectedColor);
|
||||
profileName.getBackground().mutate().setColorFilter(selectedColor, PorterDuff.Mode.SRC_ATOP);
|
||||
}
|
||||
|
@ -560,8 +538,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
private View createLocationIconView(final LocationIcon locationIcon, ViewGroup rootView) {
|
||||
FrameLayout locationIconView = (FrameLayout) UiUtilities.getInflater(getContext(), isNightMode())
|
||||
.inflate(R.layout.preference_select_icon_button, rootView, false);
|
||||
int changedProfileColor = ContextCompat.getColor(app, changedProfile.color.getColor(
|
||||
app.getDaynightHelper().isNightModeForMapControls()));
|
||||
int changedProfileColor = changedProfile.getActualColor();
|
||||
LayerDrawable locationIconDrawable = (LayerDrawable) AppCompatResources.getDrawable(app, locationIcon.getIconId());
|
||||
if (locationIconDrawable != null) {
|
||||
DrawableCompat.setTint(DrawableCompat.wrap(locationIconDrawable.getDrawable(1)), changedProfileColor);
|
||||
|
@ -609,7 +586,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
LayerDrawable navigationIconDrawable = (LayerDrawable) AppCompatResources.getDrawable(app, navigationIcon.getIconId());
|
||||
if (navigationIconDrawable != null) {
|
||||
DrawableCompat.setTint(DrawableCompat.wrap(navigationIconDrawable.getDrawable(1)),
|
||||
ContextCompat.getColor(app, changedProfile.color.getColor(app.getDaynightHelper().isNightModeForMapControls())));
|
||||
changedProfile.getActualColor());
|
||||
}
|
||||
ImageView imageView = navigationIconView.findViewById(R.id.icon);
|
||||
imageView.setImageDrawable(navigationIconDrawable);
|
||||
|
@ -634,8 +611,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
});
|
||||
ImageView outlineRect = navigationIconView.findViewById(R.id.outlineRect);
|
||||
GradientDrawable rectContourDrawable = (GradientDrawable) AppCompatResources.getDrawable(app, R.drawable.bg_select_icon_button_outline);
|
||||
int changedProfileColor = ContextCompat.getColor(app, changedProfile.color.getColor(
|
||||
app.getDaynightHelper().isNightModeForMapControls()));
|
||||
int changedProfileColor = changedProfile.getActualColor();
|
||||
if (rectContourDrawable != null) {
|
||||
rectContourDrawable.setStroke(AndroidUtils.dpToPx(app, 2), changedProfileColor);
|
||||
}
|
||||
|
@ -660,13 +636,13 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
|
||||
private void setIconColor(int iconRes) {
|
||||
int changedProfileColor = ContextCompat.getColor(app, changedProfile.color.getColor(
|
||||
app.getDaynightHelper().isNightModeForMapControls()));
|
||||
int changedProfileColor = changedProfile.getActualColor();
|
||||
View iconItem = iconItems.findViewWithTag(iconRes);
|
||||
if (iconItem != null) {
|
||||
int newColor = changedProfile.getActualColor();
|
||||
AndroidUtils.setBackground(iconItem.findViewById(R.id.background),
|
||||
UiUtilities.tintDrawable(AppCompatResources.getDrawable(app, R.drawable.circle_background_light),
|
||||
UiUtilities.getColorWithAlpha(ContextCompat.getColor(app, changedProfile.color.getColor(isNightMode())), 0.1f)));
|
||||
UiUtilities.getColorWithAlpha(newColor, 0.1f)));
|
||||
ImageView outlineCircle = iconItem.findViewById(R.id.outline);
|
||||
GradientDrawable circleContourDrawable = (GradientDrawable) AppCompatResources.getDrawable(app, R.drawable.circle_contour_bg_light);
|
||||
if (circleContourDrawable != null) {
|
||||
|
@ -775,6 +751,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
mode.setRoutingProfile(changedProfile.routingProfile);
|
||||
mode.setRouteService(changedProfile.routeService);
|
||||
mode.setIconColor(changedProfile.color);
|
||||
mode.setCustomIconColor(changedProfile.customColor);
|
||||
mode.setLocationIcon(changedProfile.locationIcon);
|
||||
mode.setNavigationIcon(changedProfile.navigationIcon);
|
||||
|
||||
|
@ -795,6 +772,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
.setRoutingProfile(changedProfile.routingProfile)
|
||||
.setRouteService(changedProfile.routeService)
|
||||
.setIconColor(changedProfile.color)
|
||||
.setCustomIconColor(changedProfile.customColor)
|
||||
.setLocationIcon(changedProfile.locationIcon)
|
||||
.setNavigationIcon(changedProfile.navigationIcon);
|
||||
|
||||
|
@ -931,6 +909,18 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
}
|
||||
|
||||
private void updateColorName() {
|
||||
if (colorsCard == null || colorName == null) {
|
||||
return;
|
||||
}
|
||||
int selectedColor = colorsCard.getSelectedColor();
|
||||
if (colorsCard.isBaseColor(selectedColor)) {
|
||||
colorName.setText(changedProfile.getProfileColorByColorValue(selectedColor).getName());
|
||||
} else {
|
||||
colorName.setText(R.string.custom_color);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProfileSelected(Bundle args) {
|
||||
String profileKey = args.getString(PROFILE_KEY_ARG);
|
||||
|
@ -938,6 +928,53 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
updateParentProfile(profileKey, imported);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCardLayoutNeeded(@NonNull BaseCard card) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCardPressed(@NonNull BaseCard card) {
|
||||
if (card instanceof ColorsCard) {
|
||||
ColorsCard cardOfColors = (ColorsCard) card;
|
||||
int color = cardOfColors.getSelectedColor();
|
||||
|
||||
if (color == changedProfile.getActualColor()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (cardOfColors.isBaseColor(color)) {
|
||||
changedProfile.customColor = null;
|
||||
changedProfile.color = changedProfile.getProfileColorByColorValue(color);
|
||||
} else {
|
||||
changedProfile.customColor = cardOfColors.getSelectedColor();
|
||||
changedProfile.color = null;
|
||||
}
|
||||
|
||||
if (iconItems != null) {
|
||||
updateIconColor(changedProfile.iconRes);
|
||||
}
|
||||
|
||||
updateColorName();
|
||||
updateProfileNameAppearance();
|
||||
updateProfileButton();
|
||||
setVerticalScrollBarEnabled(false);
|
||||
updatePreference(findPreference(MASTER_PROFILE));
|
||||
updatePreference(findPreference(LOCATION_ICON_ITEMS));
|
||||
updatePreference(findPreference(NAV_ICON_ITEMS));
|
||||
setVerticalScrollBarEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCardButtonPressed(@NonNull BaseCard card, int buttonIndex) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onColorSelected(Integer prevColor, int newColor) {
|
||||
colorsCard.onColorSelected(prevColor, newColor);
|
||||
this.onCardPressed(colorsCard);
|
||||
}
|
||||
|
||||
public static boolean showInstance(FragmentActivity activity, SettingsScreenType screenType, @Nullable String appMode, boolean imported) {
|
||||
try {
|
||||
Fragment fragment = Fragment.instantiate(activity, screenType.fragmentName);
|
||||
|
@ -963,12 +1000,29 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
ApplicationMode parent = null;
|
||||
String name;
|
||||
ProfileIconColors color;
|
||||
Integer customColor = null;
|
||||
int iconRes;
|
||||
String routingProfile;
|
||||
RouteProvider.RouteService routeService;
|
||||
NavigationIcon navigationIcon;
|
||||
LocationIcon locationIcon;
|
||||
|
||||
@ColorInt
|
||||
public int getActualColor() {
|
||||
return customColor != null ?
|
||||
customColor : ContextCompat.getColor(app, color.getColor(isNightMode()));
|
||||
}
|
||||
|
||||
public ProfileIconColors getProfileColorByColorValue(int colorValue) {
|
||||
for (ProfileIconColors color : ProfileIconColors.values()) {
|
||||
if (ContextCompat.getColor(app, color.getColor(true)) == colorValue
|
||||
|| ContextCompat.getColor(app, color.getColor(false)) == colorValue) {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
return ProfileIconColors.DEFAULT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
@ -982,6 +1036,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
if (parent != null ? !parent.equals(that.parent) : that.parent != null) return false;
|
||||
if (name != null ? !name.equals(that.name) : that.name != null) return false;
|
||||
if (color != that.color) return false;
|
||||
if (customColor != null ? !customColor.equals(that.customColor) : that.customColor != null) return false;
|
||||
if (routingProfile != null ? !routingProfile.equals(that.routingProfile) : that.routingProfile != null)
|
||||
return false;
|
||||
if (routeService != that.routeService) return false;
|
||||
|
@ -995,6 +1050,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment implements O
|
|||
result = 31 * result + (parent != null ? parent.hashCode() : 0);
|
||||
result = 31 * result + (name != null ? name.hashCode() : 0);
|
||||
result = 31 * result + (color != null ? color.hashCode() : 0);
|
||||
result = 31 * result + (customColor != null ? customColor.hashCode() : 0);
|
||||
result = 31 * result + iconRes;
|
||||
result = 31 * result + (routingProfile != null ? routingProfile.hashCode() : 0);
|
||||
result = 31 * result + (routeService != null ? routeService.hashCode() : 0);
|
||||
|
|
|
@ -443,7 +443,7 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
|
|||
});
|
||||
builder.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
|
||||
int selectedModeColor = ContextCompat.getColor(app, mode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = mode.getProfileColor(nightMode);
|
||||
setupAngleSlider(angleValue, sliderView, nightMode, selectedModeColor);
|
||||
builder.show();
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@ public class VehicleParametersFragment extends BaseSettingsFragment implements O
|
|||
}
|
||||
});
|
||||
|
||||
int selectedModeColor = ContextCompat.getColor(app, mode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = mode.getProfileColor(nightMode);
|
||||
if (!defaultSpeedOnly) {
|
||||
setupSpeedSlider(SpeedSliderType.DEFAULT_SPEED, speedUnits, defaultValue, minValue, maxValue, min, max, seekbarView, selectedModeColor);
|
||||
setupSpeedSlider(SpeedSliderType.MIN_SPEED, speedUnits, defaultValue, minValue, maxValue, min, max, seekbarView, selectedModeColor);
|
||||
|
|
|
@ -184,7 +184,7 @@ public class ContourLinesMenu {
|
|||
contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder()
|
||||
.setTitleId(toggleActionStringId, mapActivity)
|
||||
.setIcon(toggleIconId)
|
||||
.setColor(toggleIconColorId)
|
||||
.setColor(app, toggleIconColorId)
|
||||
.setListener(l)
|
||||
.setSelected(selected).createItem());
|
||||
if (selected) {
|
||||
|
@ -225,7 +225,7 @@ public class ContourLinesMenu {
|
|||
.setTitleId(R.string.srtm_plugin_name, mapActivity)
|
||||
.setLayout(R.layout.list_item_icon_and_right_btn)
|
||||
.setIcon(R.drawable.ic_plugin_srtm)
|
||||
.setColor(R.color.osmand_orange)
|
||||
.setColor(app, R.color.osmand_orange)
|
||||
.setDescription(app.getString(R.string.shared_string_plugin))
|
||||
.setListener(l).createItem());
|
||||
} else {
|
||||
|
|
|
@ -10,7 +10,6 @@ import android.widget.ArrayAdapter;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.data.LatLon;
|
||||
|
@ -303,7 +302,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
|||
if (item != null) {
|
||||
item.setDescription(app.getString(R.string.display_zoom_level,
|
||||
getPrefDescription(app, contourLinesProp, pref)));
|
||||
item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setSelected(selected);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
@ -322,7 +321,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
|||
}
|
||||
ContextMenuItem item = adapter.getItem(position);
|
||||
if (item != null) {
|
||||
item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setSelected(selected);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
@ -346,7 +345,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
|||
.setSelected(contourLinesSelected)
|
||||
.setIcon(R.drawable.ic_plugin_srtm)
|
||||
.setDescription(app.getString(R.string.display_zoom_level, descr))
|
||||
.setColor(contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.CONTOUR_LINES_ZOOM))
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(listener).createItem());
|
||||
|
@ -360,7 +359,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
|||
? R.string.shared_string_hillshade
|
||||
: R.string.download_slope_maps))
|
||||
.setSelected(terrainEnabled)
|
||||
.setColor(terrainEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, terrainEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_action_hillshade_dark)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setItemDeleteAction(makeDeleteAction(settings.TERRAIN, settings.TERRAIN_MODE))
|
||||
|
@ -473,7 +472,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
|||
possibleValues[j]);
|
||||
}
|
||||
|
||||
int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = settings.getApplicationMode().getProfileColor(nightMode);
|
||||
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
|
||||
possibleValuesString, nightMode, i, app, selectedModeColor, themeRes, new View.OnClickListener() {
|
||||
|
||||
|
|
|
@ -75,7 +75,6 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL
|
|||
private boolean nightMode;
|
||||
private boolean terrainEnabled;
|
||||
|
||||
private int colorProfileRes;
|
||||
private int colorProfile;
|
||||
|
||||
private TextView downloadDescriptionTv;
|
||||
|
@ -144,8 +143,7 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL
|
|||
uiUtilities = app.getUIUtilities();
|
||||
nightMode = app.getDaynightHelper().isNightModeForMapControls();
|
||||
srtmPlugin = OsmandPlugin.getPlugin(SRTMPlugin.class);
|
||||
colorProfileRes = settings.getApplicationMode().getIconColorInfo().getColor(nightMode);
|
||||
colorProfile = ContextCompat.getColor(app, colorProfileRes);
|
||||
colorProfile = settings.getApplicationMode().getProfileColor(nightMode);
|
||||
terrainEnabled = srtmPlugin.isTerrainLayerEnabled();
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
@ -238,7 +236,7 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL
|
|||
String transparency = transparencyValue + "%";
|
||||
int minZoom = Math.max(srtmPlugin.getTerrainMinZoom(), TERRAIN_MIN_ZOOM);
|
||||
int maxZoom = Math.min(srtmPlugin.getTerrainMaxZoom(), TERRAIN_MAX_ZOOM);
|
||||
iconIv.setImageDrawable(uiUtilities.getIcon(R.drawable.ic_action_hillshade_dark, colorProfileRes));
|
||||
iconIv.setImageDrawable(uiUtilities.getPaintedIcon(R.drawable.ic_action_hillshade_dark, colorProfile));
|
||||
stateTv.setText(R.string.shared_string_enabled);
|
||||
transparencySlider.setValue(transparencyValue);
|
||||
transparencyValueTv.setText(transparency);
|
||||
|
|
|
@ -7,12 +7,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.material.internal.FlowLayout;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
|
@ -22,6 +16,8 @@ import net.osmand.plus.R;
|
|||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.routepreparationmenu.cards.BaseCard;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.ListStringPreference;
|
||||
import net.osmand.plus.track.CustomColorBottomSheet.ColorPickerListener;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
|
@ -30,6 +26,11 @@ import org.apache.commons.logging.Log;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
public class ColorsCard extends BaseCard implements ColorPickerListener {
|
||||
|
||||
public static final int MAX_CUSTOM_COLORS = 6;
|
||||
|
@ -41,6 +42,9 @@ public class ColorsCard extends BaseCard implements ColorPickerListener {
|
|||
|
||||
private Fragment targetFragment;
|
||||
|
||||
private ApplicationMode appMode;
|
||||
private ListStringPreference colorsListPreference;
|
||||
|
||||
private List<Integer> colors;
|
||||
private List<Integer> customColors;
|
||||
|
||||
|
@ -51,12 +55,14 @@ public class ColorsCard extends BaseCard implements ColorPickerListener {
|
|||
return R.layout.colors_card;
|
||||
}
|
||||
|
||||
public ColorsCard(MapActivity mapActivity, int selectedColor, Fragment targetFragment, List<Integer> colors) {
|
||||
public ColorsCard(MapActivity mapActivity, int selectedColor, Fragment targetFragment, List<Integer> colors, ListStringPreference colorsListPreference, ApplicationMode appMode) {
|
||||
super(mapActivity);
|
||||
this.targetFragment = targetFragment;
|
||||
this.selectedColor = selectedColor;
|
||||
this.colors = colors;
|
||||
customColors = getCustomColors(app);
|
||||
this.colorsListPreference = colorsListPreference;
|
||||
this.customColors = getCustomColors(colorsListPreference, appMode);
|
||||
this.appMode = appMode;
|
||||
}
|
||||
|
||||
public int getSelectedColor() {
|
||||
|
@ -215,9 +221,18 @@ public class ColorsCard extends BaseCard implements ColorPickerListener {
|
|||
return app.getUIUtilities().getPaintedIcon(R.drawable.ic_bg_transparency, transparencyColor);
|
||||
}
|
||||
|
||||
public static List<Integer> getCustomColors(@NonNull OsmandApplication app) {
|
||||
public static List<Integer> getCustomColors(ListStringPreference colorsListPreference) {
|
||||
return getCustomColors(colorsListPreference, null);
|
||||
}
|
||||
|
||||
public static List<Integer> getCustomColors(ListStringPreference colorsListPreference, ApplicationMode appMode) {
|
||||
List<Integer> colors = new ArrayList<>();
|
||||
List<String> colorNames = app.getSettings().CUSTOM_TRACK_COLORS.getStringsList();
|
||||
List<String> colorNames;
|
||||
if (appMode == null) {
|
||||
colorNames = colorsListPreference.getStringsList();
|
||||
} else {
|
||||
colorNames = colorsListPreference.getStringsListForProfile(appMode);
|
||||
}
|
||||
if (colorNames != null) {
|
||||
for (String colorHex : colorNames) {
|
||||
try {
|
||||
|
@ -233,12 +248,24 @@ public class ColorsCard extends BaseCard implements ColorPickerListener {
|
|||
return colors;
|
||||
}
|
||||
|
||||
public int getIndexOfSelectedColor() {
|
||||
return customColors.indexOf(selectedColor);
|
||||
}
|
||||
|
||||
public boolean isBaseColor(int color) {
|
||||
return colors.contains(color);
|
||||
}
|
||||
|
||||
private void saveCustomColors() {
|
||||
List<String> colorNames = new ArrayList<>();
|
||||
for (Integer color : customColors) {
|
||||
String colorHex = Algorithms.colorToString(color);
|
||||
colorNames.add(colorHex);
|
||||
}
|
||||
app.getSettings().CUSTOM_TRACK_COLORS.setStringsList(colorNames);
|
||||
if (appMode == null) {
|
||||
colorsListPreference.setStringsList(colorNames);
|
||||
} else {
|
||||
colorsListPreference.setStringsListForProfile(appMode, colorNames);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -360,7 +360,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement
|
|||
@Override
|
||||
public void onColorSelected(Integer prevColor, int newColor) {
|
||||
if (prevColor != null) {
|
||||
List<Integer> customColors = ColorsCard.getCustomColors(app);
|
||||
List<Integer> customColors = ColorsCard.getCustomColors(app.getSettings().CUSTOM_TRACK_COLORS);
|
||||
int index = customColors.indexOf(prevColor);
|
||||
if (index != ColorsCard.INVALID_VALUE) {
|
||||
saveCustomColorsToTracks(prevColor, newColor);
|
||||
|
@ -670,7 +670,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement
|
|||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
List<Integer> colors = getTrackColors();
|
||||
colorsCard = new ColorsCard(mapActivity, trackDrawInfo.getColor(), this, colors);
|
||||
colorsCard = new ColorsCard(mapActivity, trackDrawInfo.getColor(), this, colors, app.getSettings().CUSTOM_TRACK_COLORS, null);
|
||||
colorsCard.setListener(this);
|
||||
cardsContainer.addView(colorsCard.build(mapActivity));
|
||||
}
|
||||
|
|
|
@ -80,8 +80,7 @@ public class TransportLinesMenu {
|
|||
|
||||
final boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
|
||||
final Context themedCtx = UiUtilities.getThemedContext(mapActivity, nightMode);
|
||||
final int profileColorResId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
final int profileColor = ContextCompat.getColor(themedCtx, profileColorResId);
|
||||
final int profileColor = appMode.getProfileColor(nightMode);
|
||||
|
||||
final AlertDialog.Builder b = new AlertDialog.Builder(themedCtx);
|
||||
b.setTitle(themedCtx.getString(R.string.rendering_category_transport));
|
||||
|
@ -123,7 +122,7 @@ public class TransportLinesMenu {
|
|||
View v = super.getView(position, convertView, parent);
|
||||
final ImageView icon = (ImageView) v.findViewById(R.id.icon);
|
||||
if (checkedItems[position]) {
|
||||
icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], profileColorResId));
|
||||
icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(iconIds[position], profileColor));
|
||||
} else {
|
||||
icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position]));
|
||||
}
|
||||
|
@ -138,7 +137,7 @@ public class TransportLinesMenu {
|
|||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
checkedItems[position] = isChecked;
|
||||
if (checkedItems[position]) {
|
||||
icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], profileColorResId));
|
||||
icon.setImageDrawable(app.getUIUtilities().getPaintedIcon(iconIds[position], profileColor));
|
||||
} else {
|
||||
icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position]));
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
|
@ -888,7 +889,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
compassHud.updateVisibility(!forceHideCompass && shouldShowCompass());
|
||||
|
||||
ApplicationMode appMode = settings.getApplicationMode();
|
||||
layersHud.setIconColorId(appMode.getIconColorInfo().getColor(isNight));
|
||||
layersHud.setIconColor(appMode.getProfileColor(isNight));
|
||||
if (layersHud.setIconResId(appMode.getIconRes())) {
|
||||
layersHud.update(app, isNight);
|
||||
}
|
||||
|
@ -1095,8 +1096,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
transparencyBarLayout.setVisibility(View.GONE);
|
||||
}
|
||||
boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
|
||||
int selectedModeColor = ContextCompat.getColor(app,
|
||||
appMode.getIconColorInfo().getColor(nightMode));
|
||||
int selectedModeColor = appMode.getProfileColor(nightMode);
|
||||
UiUtilities.setupSlider(transparencySlider, nightMode, selectedModeColor);
|
||||
}
|
||||
|
||||
|
@ -1115,6 +1115,10 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
private int resDarkId;
|
||||
private int resClrLight = R.color.map_button_icon_color_light;
|
||||
private int resClrDark = R.color.map_button_icon_color_dark;
|
||||
@ColorInt
|
||||
private Integer clrIntLight = null;
|
||||
@ColorInt
|
||||
private Integer clrIntDark = null;
|
||||
private String id;
|
||||
private boolean flipIconForRtl;
|
||||
|
||||
|
@ -1223,11 +1227,14 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
}
|
||||
|
||||
public boolean resetIconColors() {
|
||||
if (resClrLight == R.color.map_button_icon_color_light && resClrDark == R.color.map_button_icon_color_dark) {
|
||||
if (resClrLight == R.color.map_button_icon_color_light && resClrDark == R.color.map_button_icon_color_dark
|
||||
&& clrIntLight == null && clrIntDark == null) {
|
||||
return false;
|
||||
}
|
||||
resClrLight = R.color.map_button_icon_color_light;
|
||||
resClrDark = R.color.map_button_icon_color_dark;
|
||||
clrIntLight = null;
|
||||
clrIntDark = null;
|
||||
f = true;
|
||||
return true;
|
||||
}
|
||||
|
@ -1242,6 +1249,16 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
return this;
|
||||
}
|
||||
|
||||
public MapHudButton setIconColor(@ColorInt Integer clr) {
|
||||
if (clrIntLight == clr && clrIntDark == clr) {
|
||||
return this;
|
||||
}
|
||||
clrIntLight = clr;
|
||||
clrIntDark = clr;
|
||||
f = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MapHudButton setIconsId(int icnLight, int icnDark) {
|
||||
if (resLightId == icnLight && resDarkId == icnDark) {
|
||||
return this;
|
||||
|
@ -1262,6 +1279,17 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
return this;
|
||||
}
|
||||
|
||||
public MapHudButton setIconColor(@ColorInt int clrLight, @ColorInt int clrDark) {
|
||||
if (clrIntLight == clrLight && clrIntDark == clrDark) {
|
||||
return this;
|
||||
}
|
||||
clrIntLight = clrLight;
|
||||
clrIntDark = clrDark;
|
||||
f = true;
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
@SuppressWarnings("deprecation")
|
||||
public void update(OsmandApplication ctx, boolean night) {
|
||||
|
@ -1283,7 +1311,11 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
} else if (resLightId != 0 && !nightMode) {
|
||||
d = ctx.getUIUtilities().getIcon(resLightId);
|
||||
} else if (resId != 0) {
|
||||
d = ctx.getUIUtilities().getIcon(resId, nightMode ? resClrDark : resClrLight);
|
||||
if (clrIntLight != null && clrIntDark != null) {
|
||||
d = ctx.getUIUtilities().getPaintedIcon(resId, nightMode ? clrIntDark : clrIntLight);
|
||||
} else {
|
||||
d = ctx.getUIUtilities().getIcon(resId, nightMode ? resClrDark : resClrLight);
|
||||
}
|
||||
if (flipIconForRtl) {
|
||||
d = AndroidUtils.getDrawableForDirection(ctx, d);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.osmand.plus.views.layers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -11,6 +12,7 @@ import android.graphics.PorterDuffColorFilter;
|
|||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
|
@ -48,7 +50,8 @@ public class PointLocationLayer extends OsmandMapLayer implements ContextMenuLay
|
|||
private OsmandMapTileView view;
|
||||
|
||||
private ApplicationMode appMode;
|
||||
private int colorId;
|
||||
@ColorInt
|
||||
private int color;
|
||||
private LayerDrawable navigationIcon;
|
||||
private int navigationIconId;
|
||||
private LayerDrawable locationIcon;
|
||||
|
@ -160,30 +163,32 @@ public class PointLocationLayer extends OsmandMapLayer implements ContextMenuLay
|
|||
}
|
||||
|
||||
private void updateIcons(ApplicationMode appMode, boolean nighMode, boolean locationOutdated) {
|
||||
int colorId = locationOutdated ? ProfileIconColors.getOutdatedLocationColor(nighMode) : appMode.getIconColorInfo().getColor(nighMode);
|
||||
Context ctx = view.getContext();
|
||||
int color = locationOutdated ?
|
||||
ContextCompat.getColor(ctx, ProfileIconColors.getOutdatedLocationColor(nighMode)) :
|
||||
appMode.getProfileColor(nighMode);
|
||||
int locationIconId = appMode.getLocationIcon().getIconId();
|
||||
int navigationIconId = appMode.getNavigationIcon().getIconId();
|
||||
int headingIconId = appMode.getLocationIcon().getHeadingIconId();
|
||||
if (appMode != this.appMode || this.nm != nighMode || this.locationOutdated != locationOutdated
|
||||
|| this.colorId != colorId
|
||||
|| this.color != color
|
||||
|| this.locationIconId != locationIconId
|
||||
|| this.headingIconId != headingIconId
|
||||
|| this.navigationIconId != navigationIconId) {
|
||||
this.appMode = appMode;
|
||||
this.colorId = colorId;
|
||||
this.color = color;
|
||||
this.nm = nighMode;
|
||||
this.locationOutdated = locationOutdated;
|
||||
this.locationIconId = locationIconId;
|
||||
this.headingIconId = headingIconId;
|
||||
this.navigationIconId = navigationIconId;
|
||||
int color = ContextCompat.getColor(view.getContext(), colorId);
|
||||
navigationIcon = (LayerDrawable) AppCompatResources.getDrawable(view.getContext(), navigationIconId);
|
||||
navigationIcon = (LayerDrawable) AppCompatResources.getDrawable(ctx, navigationIconId);
|
||||
if (navigationIcon != null) {
|
||||
DrawableCompat.setTint(navigationIcon.getDrawable(1), color);
|
||||
}
|
||||
headingIcon = BitmapFactory.decodeResource(view.getResources(), headingIconId);
|
||||
headingPaint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
|
||||
locationIcon = (LayerDrawable) AppCompatResources.getDrawable(view.getContext(), locationIconId);
|
||||
locationIcon = (LayerDrawable) AppCompatResources.getDrawable(ctx, locationIconId);
|
||||
if (locationIcon != null) {
|
||||
DrawableCompat.setTint(DrawableCompat.wrap(locationIcon.getDrawable(1)), color);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import android.widget.LinearLayout;
|
|||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.ContextMenuAdapter;
|
||||
|
@ -468,7 +467,7 @@ public class MapWidgetRegistry {
|
|||
.setTitleId(R.string.configure_screen_quick_action, mapActivity)
|
||||
.setIcon(R.drawable.ic_quick_action)
|
||||
.setSelected(selected)
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(new ContextMenuAdapter.OnRowItemClick() {
|
||||
@Override
|
||||
|
@ -504,7 +503,7 @@ public class MapWidgetRegistry {
|
|||
}
|
||||
ContextMenuItem item = adapter.getItem(position);
|
||||
item.setSelected(visible);
|
||||
item.setColorRes(visible ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, visible ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
}
|
||||
|
@ -522,12 +521,11 @@ public class MapWidgetRegistry {
|
|||
final boolean selected = r.visibleCollapsed(mode) || r.visible(mode);
|
||||
final String desc = mapActivity.getString(R.string.shared_string_collapse);
|
||||
final boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
|
||||
final int currentModeColorRes = mode.getIconColorInfo().getColor(nightMode);
|
||||
final int currentModeColor = ContextCompat.getColor(app, currentModeColorRes);
|
||||
final int currentModeColor = mode.getProfileColor(nightMode);
|
||||
ContextMenuItem.ItemBuilder itemBuilder = new ContextMenuItem.ItemBuilder()
|
||||
.setIcon(r.getDrawableMenu())
|
||||
.setSelected(selected)
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setSecondaryIcon(r.widget != null ? R.drawable.ic_action_additional_option : ContextMenuItem.INVALID_ID)
|
||||
.setDescription(r.visibleCollapsed(mode) ? desc : null)
|
||||
.setListener(new ContextMenuAdapter.OnRowItemClick() {
|
||||
|
@ -557,7 +555,7 @@ public class MapWidgetRegistry {
|
|||
final int id = menuItemIds[i];
|
||||
boolean isChecked = id == checkedId;
|
||||
String title = app.getString(titleId);
|
||||
Drawable icon = isChecked && selected ? ic.getIcon(iconId, currentModeColorRes) : ic.getThemedIcon(iconId);
|
||||
Drawable icon = isChecked && selected ? ic.getPaintedIcon(iconId, currentModeColor) : ic.getThemedIcon(iconId);
|
||||
items.add(new PopUpMenuItem.Builder(app)
|
||||
.setTitle(title)
|
||||
.setIcon(icon)
|
||||
|
@ -646,7 +644,7 @@ public class MapWidgetRegistry {
|
|||
}
|
||||
ContextMenuItem item = adapter.getItem(position);
|
||||
item.setSelected(visible);
|
||||
item.setColorRes(visible ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setColor(app, visible ? R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setDescription(visible && collapsed ? desc : null);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ public class SelectWikiLanguagesBottomSheet extends MenuBottomSheetDialogFragmen
|
|||
public void createMenuItems(Bundle savedInstanceState) {
|
||||
final int activeColorResId = nightMode ?
|
||||
R.color.active_color_primary_dark : R.color.active_color_primary_light;
|
||||
final int profileColorResId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
final int profileColor = appMode.getProfileColor(nightMode);
|
||||
|
||||
final int contentPadding = app.getResources().getDimensionPixelSize(R.dimen.content_padding);
|
||||
final int contentPaddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small);
|
||||
|
@ -86,7 +86,7 @@ public class SelectWikiLanguagesBottomSheet extends MenuBottomSheetDialogFragmen
|
|||
final BottomSheetItemWithCompoundButton[] btnSelectAll = new BottomSheetItemWithCompoundButton[1];
|
||||
btnSelectAll[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
|
||||
.setChecked(this.isGlobalWikiPoiEnabled)
|
||||
.setCompoundButtonColorId(profileColorResId)
|
||||
.setCompoundButtonColor(profileColor)
|
||||
.setTitle(getString(R.string.shared_string_all_languages))
|
||||
.setTitleColorId(activeColorResId)
|
||||
.setCustomView(getCustomButtonView())
|
||||
|
@ -174,15 +174,15 @@ public class SelectWikiLanguagesBottomSheet extends MenuBottomSheetDialogFragmen
|
|||
int disableColorId = nightMode ?
|
||||
R.color.active_buttons_and_links_text_disabled_dark :
|
||||
R.color.active_buttons_and_links_text_disabled_light;
|
||||
int profileColorId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
int profileColor = appMode.getProfileColor(nightMode);
|
||||
int disableColor = ContextCompat.getColor(app, disableColorId);
|
||||
for (BottomSheetItemWithCompoundButton item : languageItems) {
|
||||
item.getView().setEnabled(enable);
|
||||
item.setTitleColorId(enable ? textColorPrimaryId : disableColorId);
|
||||
CompoundButton cb = item.getCompoundButton();
|
||||
if (cb != null) {
|
||||
cb.setEnabled(enable);
|
||||
UiUtilities.setupCompoundButton(nightMode, ContextCompat.getColor(app, enable ?
|
||||
profileColorId : disableColorId), cb);
|
||||
UiUtilities.setupCompoundButton(nightMode, enable ? profileColor : disableColor, cb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +254,7 @@ public class SelectWikiLanguagesBottomSheet extends MenuBottomSheetDialogFragmen
|
|||
Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor);
|
||||
AndroidUtils.setBackground(buttonView, bgDrawable);
|
||||
|
||||
int selectedModeColorId = appMode.getIconColorInfo().getColor(nightMode);
|
||||
int selectedModeColorId = appMode.getProfileColor(nightMode);
|
||||
UiUtilities.setupCompoundButton(nightMode, selectedModeColorId, cb);
|
||||
|
||||
return buttonView;
|
||||
|
|
|
@ -141,7 +141,7 @@ public class WikipediaPlugin extends OsmandPlugin {
|
|||
ContextMenuItem item = adapter.getItem(pos);
|
||||
if (item != null) {
|
||||
item.setSelected(selected);
|
||||
item.setColorRes(selected ?
|
||||
item.setColor(app, selected ?
|
||||
R.color.osmand_orange : ContextMenuItem.INVALID_ID);
|
||||
item.setDescription(selected ? getLanguagesSummary() : null);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
@ -160,7 +160,7 @@ public class WikipediaPlugin extends OsmandPlugin {
|
|||
.setTitleId(R.string.shared_string_wikipedia, mapActivity)
|
||||
.setDescription(selected ? getLanguagesSummary() : null)
|
||||
.setSelected(selected)
|
||||
.setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setColor(app, selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID)
|
||||
.setIcon(R.drawable.ic_plugin_wikipedia)
|
||||
.setSecondaryIcon(R.drawable.ic_action_additional_option)
|
||||
.setListener(listener).createItem());
|
||||
|
|
|
@ -74,7 +74,7 @@ public class WikipediaPoiMenu {
|
|||
.setTitleId(toggleActionStringId, mapActivity)
|
||||
.setDescription(summary)
|
||||
.setIcon(toggleIconId)
|
||||
.setColor(toggleIconColorId)
|
||||
.setColor(app, toggleIconColorId)
|
||||
.setListener(l)
|
||||
.setSelected(enabled).createItem());
|
||||
|
||||
|
|
Loading…
Reference in a new issue