mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-01 22:08:22 +03:00
searchfilters: replace Map<Integer, Object> with SparseArrayCompat
This commit is contained in:
parent
868be7a905
commit
eec3cec52c
2 changed files with 27 additions and 25 deletions
|
@ -18,10 +18,9 @@ import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||||
import org.schabi.newpipe.util.DeviceUtils;
|
import org.schabi.newpipe.util.DeviceUtils;
|
||||||
import org.schabi.newpipe.util.ServiceHelper;
|
import org.schabi.newpipe.util.ServiceHelper;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import androidx.collection.SparseArrayCompat;
|
||||||
|
|
||||||
public class SearchFilterDialogSpinnerAdapter extends BaseAdapter {
|
public class SearchFilterDialogSpinnerAdapter extends BaseAdapter {
|
||||||
|
|
||||||
|
@ -30,8 +29,8 @@ public class SearchFilterDialogSpinnerAdapter extends BaseAdapter {
|
||||||
private final BaseSearchFilterUiGenerator.UiWrapperMapDelegate wrapperDelegate;
|
private final BaseSearchFilterUiGenerator.UiWrapperMapDelegate wrapperDelegate;
|
||||||
private final Spinner spinner;
|
private final Spinner spinner;
|
||||||
private final SparseIntArray id2PosMap = new SparseIntArray();
|
private final SparseIntArray id2PosMap = new SparseIntArray();
|
||||||
private final Map<Integer, UiItemWrapperSpinner>
|
private final SparseArrayCompat<UiItemWrapperSpinner>
|
||||||
viewWrapperMap = new HashMap<>();
|
viewWrapperMap = new SparseArrayCompat<>();
|
||||||
|
|
||||||
public SearchFilterDialogSpinnerAdapter(
|
public SearchFilterDialogSpinnerAdapter(
|
||||||
final Context context,
|
final Context context,
|
||||||
|
|
|
@ -13,14 +13,13 @@ import org.schabi.newpipe.fragments.list.search.SearchFragment;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.collection.SparseArrayCompat;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.search.filter.FilterContainer.ITEM_IDENTIFIER_UNKNOWN;
|
import static org.schabi.newpipe.extractor.search.filter.FilterContainer.ITEM_IDENTIFIER_UNKNOWN;
|
||||||
|
|
||||||
|
@ -46,10 +45,12 @@ public class SearchFilterLogic {
|
||||||
private final SearchQueryHandlerFactory searchQHFactory;
|
private final SearchQueryHandlerFactory searchQHFactory;
|
||||||
private final ExclusiveGroups contentFilterExclusive = new ExclusiveGroups();
|
private final ExclusiveGroups contentFilterExclusive = new ExclusiveGroups();
|
||||||
private final ExclusiveGroups sortFilterExclusive = new ExclusiveGroups();
|
private final ExclusiveGroups sortFilterExclusive = new ExclusiveGroups();
|
||||||
private final Map<Integer, IUiItemWrapper> contentFilterIdToUiItemMap = new HashMap<>();
|
private final SparseArrayCompat<IUiItemWrapper> contentFilterIdToUiItemMap =
|
||||||
private final Map<Integer, IUiItemWrapper> sortFilterIdToUiItemMap = new HashMap<>();
|
new SparseArrayCompat<>();
|
||||||
private final Map<Integer, FilterContainer> contentFilterFidToSupersetSortFilterMap =
|
private final SparseArrayCompat<IUiItemWrapper> sortFilterIdToUiItemMap =
|
||||||
new HashMap<>();
|
new SparseArrayCompat<>();
|
||||||
|
private final SparseArrayCompat<FilterContainer> contentFilterFidToSupersetSortFilterMap =
|
||||||
|
new SparseArrayCompat<>();
|
||||||
private final Callback callback;
|
private final Callback callback;
|
||||||
/**
|
/**
|
||||||
* This list is used to store via Icepick and eventual store as preset
|
* This list is used to store via Icepick and eventual store as preset
|
||||||
|
@ -118,7 +119,7 @@ public class SearchFilterLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reselectUiItems(final List<Integer> selectedFilters,
|
private void reselectUiItems(final List<Integer> selectedFilters,
|
||||||
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
|
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
|
||||||
for (final int id : selectedFilters) {
|
for (final int id : selectedFilters) {
|
||||||
final IUiItemWrapper iUiItemWrapper = filterIdToUiItemMap.get(id);
|
final IUiItemWrapper iUiItemWrapper = filterIdToUiItemMap.get(id);
|
||||||
if (iUiItemWrapper != null) {
|
if (iUiItemWrapper != null) {
|
||||||
|
@ -127,10 +128,10 @@ public class SearchFilterLogic {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deselectUiItems(final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
|
private void deselectUiItems(final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
|
||||||
for (final Map.Entry<Integer, IUiItemWrapper> entry : filterIdToUiItemMap.entrySet()) {
|
for (int index = 0; index < filterIdToUiItemMap.size(); index++) {
|
||||||
if (entry != null && entry.getValue() != null) {
|
final IUiItemWrapper iUiItemWrapper = filterIdToUiItemMap.valueAt(index);
|
||||||
final IUiItemWrapper iUiItemWrapper = entry.getValue();
|
if (iUiItemWrapper != null) {
|
||||||
iUiItemWrapper.setChecked(false);
|
iUiItemWrapper.setChecked(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,7 +191,7 @@ public class SearchFilterLogic {
|
||||||
* @param createUiForFiltersWorker the implementation how to create the UI.
|
* @param createUiForFiltersWorker the implementation how to create the UI.
|
||||||
*/
|
*/
|
||||||
private void initFiltersUi(final FilterGroup[] filterGroups,
|
private void initFiltersUi(final FilterGroup[] filterGroups,
|
||||||
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
|
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
|
||||||
final ICreateUiForFiltersWorker createUiForFiltersWorker) {
|
final ICreateUiForFiltersWorker createUiForFiltersWorker) {
|
||||||
|
|
||||||
filterIdToUiItemMap.clear();
|
filterIdToUiItemMap.clear();
|
||||||
|
@ -225,7 +226,7 @@ public class SearchFilterLogic {
|
||||||
final FilterGroup[] filterGroups,
|
final FilterGroup[] filterGroups,
|
||||||
final ExclusiveGroups exclusive,
|
final ExclusiveGroups exclusive,
|
||||||
final List<Integer> selectedFilters,
|
final List<Integer> selectedFilters,
|
||||||
@Nullable final Map<Integer, FilterContainer> fidToSupersetSortFilterMap) {
|
@Nullable final SparseArrayCompat<FilterContainer> fidToSupersetSortFilterMap) {
|
||||||
selectedFilters.clear();
|
selectedFilters.clear();
|
||||||
exclusive.clear();
|
exclusive.clear();
|
||||||
|
|
||||||
|
@ -389,16 +390,18 @@ public class SearchFilterLogic {
|
||||||
* See {@link SearchFilterOptionMenuAlikeDialogGenerator}
|
* See {@link SearchFilterOptionMenuAlikeDialogGenerator}
|
||||||
*/
|
*/
|
||||||
protected void showAllAvailableSortFilters() {
|
protected void showAllAvailableSortFilters() {
|
||||||
contentFilterFidToSupersetSortFilterMap.values().stream()
|
for (int index = 0; index < contentFilterFidToSupersetSortFilterMap.size(); index++) {
|
||||||
.filter(Objects::nonNull)
|
final FilterContainer container =
|
||||||
.distinct()
|
contentFilterFidToSupersetSortFilterMap.valueAt(index);
|
||||||
.forEach(container ->
|
if (container != null) {
|
||||||
setUiItemsVisibility(container, true, sortFilterIdToUiItemMap));
|
setUiItemsVisibility(container, true, sortFilterIdToUiItemMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUiItemsVisibility(final FilterContainer filters,
|
private void setUiItemsVisibility(final FilterContainer filters,
|
||||||
final boolean isVisible,
|
final boolean isVisible,
|
||||||
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
|
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
|
||||||
if (filters != null && filters.getFilterGroups() != null) {
|
if (filters != null && filters.getFilterGroups() != null) {
|
||||||
for (final FilterGroup filterGroup : filters.getFilterGroups()) {
|
for (final FilterGroup filterGroup : filters.getFilterGroups()) {
|
||||||
setUiItemVisible(isVisible, filterIdToUiItemMap, filterGroup.getIdentifier());
|
setUiItemVisible(isVisible, filterIdToUiItemMap, filterGroup.getIdentifier());
|
||||||
|
@ -410,7 +413,7 @@ public class SearchFilterLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUiItemVisible(final boolean isVisible,
|
private void setUiItemVisible(final boolean isVisible,
|
||||||
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
|
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
|
||||||
final int id) {
|
final int id) {
|
||||||
final IUiItemWrapper uiWrapper = filterIdToUiItemMap.get(id);
|
final IUiItemWrapper uiWrapper = filterIdToUiItemMap.get(id);
|
||||||
if (uiWrapper != null) {
|
if (uiWrapper != null) {
|
||||||
|
@ -473,7 +476,7 @@ public class SearchFilterLogic {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectFilter(final int id,
|
private void selectFilter(final int id,
|
||||||
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
|
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
|
||||||
final List<Integer> selectedFilter,
|
final List<Integer> selectedFilter,
|
||||||
final ExclusiveGroups exclusive) {
|
final ExclusiveGroups exclusive) {
|
||||||
final IUiItemWrapper uiItemWrapper =
|
final IUiItemWrapper uiItemWrapper =
|
||||||
|
|
Loading…
Add table
Reference in a new issue