fix for icons color glitch
minor refactoring
This commit is contained in:
parent
a5f026b79d
commit
845eb55909
3 changed files with 61 additions and 56 deletions
|
@ -55,7 +55,7 @@ public class AppModesBottomSheetDialogFragment extends MenuBottomSheetDialogFrag
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
|
themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
|
||||||
adapter = new ProfileMenuAdapter(allModes, selectedModes, getMyApplication(), listener, true);
|
adapter = new ProfileMenuAdapter(allModes, selectedModes, getMyApplication(), true);
|
||||||
recyclerView = new RecyclerView(getContext());
|
recyclerView = new RecyclerView(getContext());
|
||||||
recyclerView = (RecyclerView) View
|
recyclerView = (RecyclerView) View
|
||||||
.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.recyclerview, null);
|
.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.recyclerview, null);
|
||||||
|
|
|
@ -34,21 +34,11 @@ public class ProfileMenuAdapter extends RecyclerView.Adapter<ProfileViewHolder>
|
||||||
private static final String MANAGE_BTN = "manage_button";
|
private static final String MANAGE_BTN = "manage_button";
|
||||||
|
|
||||||
public ProfileMenuAdapter(List<ApplicationMode> items, Set<ApplicationMode> selectedItems,
|
public ProfileMenuAdapter(List<ApplicationMode> items, Set<ApplicationMode> selectedItems,
|
||||||
OsmandApplication app, ProfileListener listener) {
|
OsmandApplication app, boolean isBottomSheet) {
|
||||||
this.items.addAll(items);
|
|
||||||
this.listener = listener;
|
|
||||||
this.app = app;
|
|
||||||
this.selectedItems = selectedItems;
|
|
||||||
selectedIconColorRes = isNightMode(app)
|
|
||||||
? R.color.active_buttons_and_links_dark
|
|
||||||
: R.color.active_buttons_and_links_light;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProfileMenuAdapter(List<ApplicationMode> items, Set<ApplicationMode> selectedItems,
|
|
||||||
OsmandApplication app, ProfileListener listener, boolean isBottomSheet) {
|
|
||||||
this.items.addAll(items);
|
this.items.addAll(items);
|
||||||
|
if (isBottomSheet) {
|
||||||
this.items.add(MANAGE_BTN);
|
this.items.add(MANAGE_BTN);
|
||||||
this.listener = listener;
|
}
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.selectedItems = selectedItems;
|
this.selectedItems = selectedItems;
|
||||||
this.isBottomSheet = isBottomSheet;
|
this.isBottomSheet = isBottomSheet;
|
||||||
|
@ -71,9 +61,9 @@ public class ProfileMenuAdapter extends RecyclerView.Adapter<ProfileViewHolder>
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateItemsList(List<ApplicationMode> newList, Set<ApplicationMode> selectedItems) {
|
public void updateItemsList(List<ApplicationMode> newList, Set<ApplicationMode> selectedItems) {
|
||||||
items.clear();
|
this.items.clear();
|
||||||
this.selectedItems.clear();
|
this.selectedItems.clear();
|
||||||
items.addAll(newList);
|
this.items.addAll(newList);
|
||||||
if (isBottomSheet) {
|
if (isBottomSheet) {
|
||||||
items.add(MANAGE_BTN);
|
items.add(MANAGE_BTN);
|
||||||
}
|
}
|
||||||
|
@ -91,7 +81,35 @@ public class ProfileMenuAdapter extends RecyclerView.Adapter<ProfileViewHolder>
|
||||||
public ProfileViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public ProfileViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
View itemView = LayoutInflater.from(parent.getContext())
|
View itemView = LayoutInflater.from(parent.getContext())
|
||||||
.inflate(R.layout.profile_list_item, parent, false);
|
.inflate(R.layout.profile_list_item, parent, false);
|
||||||
return new ProfileViewHolder(itemView);
|
final ProfileViewHolder holder = new ProfileViewHolder(itemView);
|
||||||
|
|
||||||
|
holder.itemView.findViewById(R.id.compound_button).setOnClickListener(
|
||||||
|
new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Object o = items.get(holder.getAdapterPosition());
|
||||||
|
if (o instanceof ApplicationMode) {
|
||||||
|
final ApplicationMode item = (ApplicationMode) o;
|
||||||
|
int iconRes = item.getParent() == null
|
||||||
|
? item.getSmallIconDark()
|
||||||
|
: item.getIconRes(app);
|
||||||
|
|
||||||
|
if (iconRes == 0 || iconRes == -1) {
|
||||||
|
iconRes = R.drawable.ic_action_world_globe;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!selectedItems.contains(item)) {
|
||||||
|
selectedItems.add(item);
|
||||||
|
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, selectedIconColorRes));
|
||||||
|
} else {
|
||||||
|
selectedItems.remove(item);
|
||||||
|
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, R.color.icon_color));
|
||||||
|
}
|
||||||
|
listener.changeProfileStatus(item, holder.aSwitch.isChecked());
|
||||||
|
}
|
||||||
|
}});
|
||||||
|
|
||||||
|
return holder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -133,8 +151,6 @@ public class ProfileMenuAdapter extends RecyclerView.Adapter<ProfileViewHolder>
|
||||||
iconRes = R.drawable.ic_action_world_globe;
|
iconRes = R.drawable.ic_action_world_globe;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int ficon = iconRes;
|
|
||||||
|
|
||||||
if (selectedItems.contains(item)) {
|
if (selectedItems.contains(item)) {
|
||||||
holder.aSwitch.setChecked(true);
|
holder.aSwitch.setChecked(true);
|
||||||
holder.icon
|
holder.icon
|
||||||
|
@ -144,19 +160,6 @@ public class ProfileMenuAdapter extends RecyclerView.Adapter<ProfileViewHolder>
|
||||||
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, R.color.icon_color));
|
holder.icon.setImageDrawable(app.getUIUtilities().getIcon(iconRes, R.color.icon_color));
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.aSwitch.setOnClickListener(new OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
listener.changeProfileStatus(item, holder.aSwitch.isChecked());
|
|
||||||
if (selectedItems.contains(item)) {
|
|
||||||
holder.icon.setImageDrawable(app.getUIUtilities()
|
|
||||||
.getIcon(ficon, selectedIconColorRes));
|
|
||||||
} else {
|
|
||||||
holder.icon.setImageDrawable(
|
|
||||||
app.getUIUtilities().getIcon(ficon, R.color.icon_color));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
holder.profileOptions.setOnClickListener(new OnClickListener() {
|
holder.profileOptions.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -65,6 +65,36 @@ public class SettingsProfileFragment extends BaseOsmAndFragment {
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||||
@Nullable Bundle savedInstanceState) {
|
@Nullable Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
View view = inflater.inflate(R.layout.profiles_list_fragment, container, false);
|
||||||
|
recyclerView = view.findViewById(R.id.profiles_list);
|
||||||
|
addNewProfileBtn = view.findViewById(R.id.add_profile_btn);
|
||||||
|
|
||||||
|
addNewProfileBtn.setOnClickListener(new OnClickListener() {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
final SelectProfileBottomSheetDialogFragment dialog = new SelectProfileBottomSheetDialogFragment();
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putString(DIALOG_TYPE, TYPE_BASE_APP_PROFILE);
|
||||||
|
dialog.setArguments(bundle);
|
||||||
|
if (getActivity() != null) {
|
||||||
|
getActivity().getSupportFragmentManager().beginTransaction()
|
||||||
|
.add(dialog, "select_base_type").commitAllowingStateLoss();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
adapter = new ProfileMenuAdapter(allAppModes, availableAppModes, getMyApplication(), false);
|
||||||
|
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||||
|
recyclerView.setAdapter(adapter);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
if (listener == null) {
|
||||||
listener = new ProfileListener() {
|
listener = new ProfileListener() {
|
||||||
@Override
|
@Override
|
||||||
public void changeProfileStatus(ApplicationMode am, boolean isSelected) {
|
public void changeProfileStatus(ApplicationMode am, boolean isSelected) {
|
||||||
|
@ -86,36 +116,8 @@ public class SettingsProfileFragment extends BaseOsmAndFragment {
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
View view = inflater.inflate(R.layout.profiles_list_fragment, container, false);
|
|
||||||
recyclerView = view.findViewById(R.id.profiles_list);
|
|
||||||
addNewProfileBtn = view.findViewById(R.id.add_profile_btn);
|
|
||||||
|
|
||||||
addNewProfileBtn.setOnClickListener(new OnClickListener() {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
final SelectProfileBottomSheetDialogFragment dialog = new SelectProfileBottomSheetDialogFragment();
|
|
||||||
Bundle bundle = new Bundle();
|
|
||||||
bundle.putString(DIALOG_TYPE, TYPE_BASE_APP_PROFILE);
|
|
||||||
dialog.setArguments(bundle);
|
|
||||||
if (getActivity() != null) {
|
|
||||||
getActivity().getSupportFragmentManager().beginTransaction()
|
|
||||||
.add(dialog, "select_base_type").commitAllowingStateLoss();
|
|
||||||
}
|
}
|
||||||
}
|
adapter.setListener(listener);
|
||||||
});
|
|
||||||
|
|
||||||
adapter = new ProfileMenuAdapter(allAppModes, availableAppModes, getMyApplication(), listener);
|
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
|
||||||
recyclerView.setAdapter(adapter);
|
|
||||||
return view;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
|
|
||||||
getBaseProfileListener();
|
getBaseProfileListener();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue