/*
* This file is part of Popcorn Time.
*
* Popcorn Time is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Popcorn Time is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Popcorn Time. If not, see <http://www.gnu.org/licenses/>.
*/
package pct.droid.adapters;
import android.graphics.PorterDuff;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.Bind;
import pct.droid.R;
import pct.droid.base.PopcornApplication;
import pct.droid.base.content.preferences.PrefItem;
public class PreferencesListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<PrefItem> mItems;
final int NORMAL = 0, HEADER = 1;
public PreferencesListAdapter(List<PrefItem> items) {
mItems = items;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v;
switch (viewType) {
case HEADER:
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_subheader, parent, false);
return new PreferencesListAdapter.HeaderHolder(v);
case NORMAL:
default:
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_icon_twoline_item, parent, false);
return new PreferencesListAdapter.ViewHolder(v);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
if (getItemViewType(position) == NORMAL) {
ViewHolder itemViewHolder = (ViewHolder) viewHolder;
PrefItem item = mItems.get(position);
itemViewHolder.itemView.setClickable(item.isClickable());
itemViewHolder.icon.setImageResource(item.getIconResource());
itemViewHolder.icon.setColorFilter(PopcornApplication.getAppContext().getResources().getColor(R.color.text_color), PorterDuff.Mode.SRC_IN);
itemViewHolder.text1.setText(item.getTitle());
itemViewHolder.text2.setText(item.getSubtitle());
if (item.getDefaultValue() instanceof Boolean) {
itemViewHolder.checkBox.setVisibility(View.VISIBLE);
itemViewHolder.checkBox.setChecked((boolean) item.getValue());
} else {
itemViewHolder.checkBox.setVisibility(View.GONE);
}
} else if (getItemViewType(position) == HEADER) {
HeaderHolder headerViewHolder = (HeaderHolder) viewHolder;
headerViewHolder.itemView.setText(mItems.get(position).getTitle());
}
}
@Override
public int getItemCount() {
return mItems.size();
}
@Override
public int getItemViewType(int position) {
if (mItems.get(position).isTitle()) {
return HEADER;
}
return NORMAL;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View itemView;
@Bind(android.R.id.icon)
ImageView icon;
@Bind(android.R.id.text1)
TextView text1;
@Bind(android.R.id.text2)
TextView text2;
@Bind(android.R.id.checkbox)
CheckBox checkBox;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
this.itemView = itemView;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getPosition();
PrefItem item = (PrefItem) mItems.get(position);
item.onClick();
}
}
public class HeaderHolder extends RecyclerView.ViewHolder {
TextView itemView;
public HeaderHolder(View itemView) {
super(itemView);
this.itemView = (TextView) itemView;
}
}
}