/* * TV-Browser for Android * Copyright (C) 2014 René Mach (rene@tvbrowser.org) * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to use, copy, modify or merge the Software, * furthermore to publish and distribute the Software free of charge without modifications and to * permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package org.tvbrowser.filter; import org.tvbrowser.content.TvBrowserContentProvider; import org.tvbrowser.tvbrowser.WhereClause; import org.tvbrowser.utils.UiUtils; import android.content.Context; import android.view.ViewGroup; /** * A class with values of a ChannelFilter. * <p> * @author René Mach */ public class FilterValuesChannels extends FilterValues implements ChannelFilter { private int[] mChannelIds; public FilterValuesChannels() { this("",new int[0]); } public FilterValuesChannels(String name, int[] channelIds) { super(name); mChannelIds = channelIds; } protected FilterValuesChannels(String name, String values) { super(name); final String[] ids = values.split(";"); mChannelIds = new int[ids.length]; for(int i = 0; i < mChannelIds.length; i++) { mChannelIds[i] = Integer.parseInt(ids[i]); } } public WhereClause getWhereClause(Context context) { final StringBuilder where = new StringBuilder(); if(mChannelIds.length > 0) { where.append(" AND ").append(TvBrowserContentProvider.CHANNEL_KEY_CHANNEL_ID).append(" IN ( "); for(int i = 0; i < mChannelIds.length-1; i++) { where.append(mChannelIds[i]).append(", "); } where.append(mChannelIds[mChannelIds.length-1]).append(" ) "); } return new WhereClause(where.toString(),null); } @Override protected String getSaveString() { StringBuilder save = new StringBuilder(); for(int i = 0; i < mChannelIds.length-1; i++) { save.append(mChannelIds[i]).append(";"); } if(mChannelIds.length > 0) { save.append(mChannelIds[mChannelIds.length-1]); } return save.toString(); } private Runnable mCallback; @Override public void edit(Context context, Runnable callback, ViewGroup parent) { mCallback = callback; UiUtils.showChannelFilterSelection(context, this, parent); } @Override public int[] getFilteredChannelIds() { return mChannelIds; } @Override public void setFilterValues(String name, int[] filteredChannelIds) { if(name != null && filteredChannelIds != null) { mName = name; mChannelIds = filteredChannelIds; if(mCallback != null) { mCallback.run(); } mCallback = null; } } }