/* * Copyright 2015 Daniel Dittmar * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package dan.dit.whatsthat.testsubject.shopping.filter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.List; import dan.dit.whatsthat.testsubject.shopping.ShopArticle; import dan.dit.whatsthat.util.general.VersionSafe; /** * Created by daniel on 28.09.15. */ public class ShopArticleGroupFilter extends ShopArticleFilter { private final ViewGroup mFilterHolder; private final List<ShopArticleFilter> mChildFilters; private final OnFilterUpdateListener mListener; public interface OnFilterUpdateListener { void onFilterUpdate(); } public ShopArticleGroupFilter(ViewGroup childContainer, int iconResId, List<ShopArticleFilter> childFilters, boolean root, OnFilterUpdateListener listener) { super(iconResId); mFilterHolder = childContainer; mChildFilters = childFilters; mVisible = !root; setActive(root); mListener = listener; initFilters(); } @Override public void setActive(boolean active) { super.setActive(active); if (active) { mFilterHolder.setVisibility(View.VISIBLE); } else { mFilterHolder.setVisibility(View.GONE); } } private void initFilters() { mFilterHolder.removeAllViews(); for (ShopArticleFilter filter : mChildFilters) { if (!filter.isVisible()) { continue; } ImageView image = new ImageView(mFilterHolder.getContext()); image.setImageResource(filter.getIcon()); applyFilterToImage(image, filter); image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int index = mFilterHolder.indexOfChild(view); List<ShopArticleFilter> filters = mChildFilters; if (filters != null && index >= 0 && index < filters.size()) { ShopArticleFilter filter = filters.get(index); filter.setActive(!filter.isActive()); ImageView image = (ImageView) view; applyFilterToImage(image, filter); mListener.onFilterUpdate(); } } }); mFilterHolder.addView(image); } } private void applyFilterToImage(ImageView image, ShopArticleFilter filter) { if (filter.isActive()) { VersionSafe.setImageAlpha(image, 255); } else { VersionSafe.setImageAlpha(image, 70); } } @Override public boolean check(ShopArticle article) { for (ShopArticleFilter filter : mChildFilters) { if (filter.isActive() && filter.check(article)) { return true; } } return false; } }