Loading src/com/android/customization/widget/OptionSelectorController.java +19 −9 Original line number Diff line number Diff line Loading @@ -80,8 +80,8 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { private final Set<OptionSelectedListener> mListeners = new HashSet<>(); private RecyclerView.Adapter<TileViewHolder> mAdapter; private CustomizationOption mSelectedOption; private CustomizationOption mAppliedOption; private T mSelectedOption; private T mAppliedOption; public OptionSelectorController(RecyclerView container, List<T> options) { this(container, options, true, CheckmarkStyle.CORNER); Loading @@ -103,7 +103,10 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { mListeners.remove(listener); } public void setSelectedOption(CustomizationOption option) { /** * Mark the given option as selected */ public void setSelectedOption(T option) { if (!mOptions.contains(option)) { throw new IllegalArgumentException("Invalid option"); } Loading @@ -113,16 +116,23 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { notifyListeners(); } /** * @return whether this controller contains the given option */ public boolean containsOption(T option) { return mOptions.contains(option); } /** * Mark an option as the one which is currently applied on the device. This will result in a * check being displayed in the lower-right corner of the corresponding ViewHolder. * @param option */ public void setAppliedOption(CustomizationOption option) { public void setAppliedOption(T option) { if (!mOptions.contains(option)) { throw new IllegalArgumentException("Invalid option"); } CustomizationOption lastAppliedOption = mAppliedOption; T lastAppliedOption = mAppliedOption; mAppliedOption = option; mAdapter.notifyItemChanged(mOptions.indexOf(option)); if (lastAppliedOption != null) { Loading @@ -130,7 +140,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { } } private void updateActivatedStatus(CustomizationOption option, boolean isActivated) { private void updateActivatedStatus(T option, boolean isActivated) { int index = mOptions.indexOf(option); if (index < 0) { return; Loading Loading @@ -195,7 +205,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { @Override public void onBindViewHolder(@NonNull TileViewHolder holder, int position) { CustomizationOption option = mOptions.get(position); T option = mOptions.get(position); if (option.isActive(manager)) { mAppliedOption = option; if (mSelectedOption == null) { Loading Loading @@ -333,7 +343,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { if (mListeners.isEmpty()) { return; } CustomizationOption option = mSelectedOption; T option = mSelectedOption; Set<OptionSelectedListener> iterableListeners = new HashSet<>(mListeners); for (OptionSelectedListener listener : iterableListeners) { listener.onOptionSelected(option); Loading @@ -359,7 +369,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { * @param option The customization option * @param id Resource ID of the string to use for the content description */ public void setContentDescription(Context context, CustomizationOption option, int id) { public void setContentDescription(Context context, CustomizationOption<?> option, int id) { title = option.getTitle(); if (TextUtils.isEmpty(title) && tileView != null) { title = tileView.getContentDescription(); Loading Loading
src/com/android/customization/widget/OptionSelectorController.java +19 −9 Original line number Diff line number Diff line Loading @@ -80,8 +80,8 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { private final Set<OptionSelectedListener> mListeners = new HashSet<>(); private RecyclerView.Adapter<TileViewHolder> mAdapter; private CustomizationOption mSelectedOption; private CustomizationOption mAppliedOption; private T mSelectedOption; private T mAppliedOption; public OptionSelectorController(RecyclerView container, List<T> options) { this(container, options, true, CheckmarkStyle.CORNER); Loading @@ -103,7 +103,10 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { mListeners.remove(listener); } public void setSelectedOption(CustomizationOption option) { /** * Mark the given option as selected */ public void setSelectedOption(T option) { if (!mOptions.contains(option)) { throw new IllegalArgumentException("Invalid option"); } Loading @@ -113,16 +116,23 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { notifyListeners(); } /** * @return whether this controller contains the given option */ public boolean containsOption(T option) { return mOptions.contains(option); } /** * Mark an option as the one which is currently applied on the device. This will result in a * check being displayed in the lower-right corner of the corresponding ViewHolder. * @param option */ public void setAppliedOption(CustomizationOption option) { public void setAppliedOption(T option) { if (!mOptions.contains(option)) { throw new IllegalArgumentException("Invalid option"); } CustomizationOption lastAppliedOption = mAppliedOption; T lastAppliedOption = mAppliedOption; mAppliedOption = option; mAdapter.notifyItemChanged(mOptions.indexOf(option)); if (lastAppliedOption != null) { Loading @@ -130,7 +140,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { } } private void updateActivatedStatus(CustomizationOption option, boolean isActivated) { private void updateActivatedStatus(T option, boolean isActivated) { int index = mOptions.indexOf(option); if (index < 0) { return; Loading Loading @@ -195,7 +205,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { @Override public void onBindViewHolder(@NonNull TileViewHolder holder, int position) { CustomizationOption option = mOptions.get(position); T option = mOptions.get(position); if (option.isActive(manager)) { mAppliedOption = option; if (mSelectedOption == null) { Loading Loading @@ -333,7 +343,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { if (mListeners.isEmpty()) { return; } CustomizationOption option = mSelectedOption; T option = mSelectedOption; Set<OptionSelectedListener> iterableListeners = new HashSet<>(mListeners); for (OptionSelectedListener listener : iterableListeners) { listener.onOptionSelected(option); Loading @@ -359,7 +369,7 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { * @param option The customization option * @param id Resource ID of the string to use for the content description */ public void setContentDescription(Context context, CustomizationOption option, int id) { public void setContentDescription(Context context, CustomizationOption<?> option, int id) { title = option.getTitle(); if (TextUtils.isEmpty(title) && tileView != null) { title = tileView.getContentDescription(); Loading