package com.erakk.lnreader.adapter;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import com.erakk.lnreader.R;
import com.erakk.lnreader.UIHelper;
import com.erakk.lnreader.dao.NovelsDao;
import com.erakk.lnreader.helper.Util;
import com.erakk.lnreader.model.BookmarkModel;
import com.erakk.lnreader.model.PageModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class BookmarkModelAdapter extends ArrayAdapter<BookmarkModel> {
private static final String TAG = BookmarkModelAdapter.class.toString();
private final int layoutResourceId;
private final Context context;
private List<BookmarkModel> data;
private PageModel novel = null;
public boolean showPage = false;
public boolean showCheckBox = false;
public BookmarkModelAdapter(Context context, int resourceId, List<BookmarkModel> objects, PageModel parent) {
super(context, resourceId, objects);
this.layoutResourceId = resourceId;
this.context = context;
this.data = objects;
this.novel = parent;
}
@Override
public void addAll(Collection<? extends BookmarkModel> objects) {
synchronized (this) {
if (data == null) {
data = new ArrayList<BookmarkModel>();
}
data.addAll(objects);
this.notifyDataSetChanged();
}
}
@Override
public void addAll(BookmarkModel... objects) {
synchronized (this) {
if (data == null) {
data = new ArrayList<BookmarkModel>();
}
for (BookmarkModel item : objects) {
data.add(item);
}
this.notifyDataSetChanged();
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
}
BookmarkModelHolder holder = new BookmarkModelHolder();
final BookmarkModel bookmark = data.get(position);
setTitleAndSubtitle(convertView, holder, bookmark);
holder.txtPIndex = (TextView) convertView.findViewById(R.id.p_index);
if (holder.txtPIndex != null) {
holder.txtPIndex.setText("#" + bookmark.getpIndex());
}
holder.txtCreateDate = (TextView) convertView.findViewById(R.id.create_date);
if (holder.txtCreateDate != null) {
holder.txtCreateDate.setText(context.getResources().getString(R.string.added) + " " + Util.formatDateForDisplay(context, bookmark.getCreationDate()));
}
holder.txtExcerpt = (TextView) convertView.findViewById(R.id.excerpt);
if (holder.txtExcerpt != null) {
holder.txtExcerpt.setText(bookmark.getExcerpt());
}
holder.chkSelection = (CheckBox) convertView.findViewById(R.id.chk_selection);
if (holder.chkSelection != null) {
if (showCheckBox) {
holder.chkSelection.setVisibility(View.VISIBLE);
holder.chkSelection.setChecked(bookmark.isSelected());
holder.chkSelection.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
bookmark.setSelected(isChecked);
}
});
} else
holder.chkSelection.setVisibility(View.GONE);
}
convertView.setTag(holder);
return convertView;
}
/**
* @param row
* @param holder
* @param bookmark
*/
private void setTitleAndSubtitle(View row, BookmarkModelHolder holder, final BookmarkModel bookmark) {
// Bookmark title
holder.txtPageTitle = (TextView) row.findViewById(R.id.pageTitle);
if (holder.txtPageTitle != null) {
if (showPage) {
holder.txtPageTitle.setVisibility(View.VISIBLE);
holder.txtPageTitle.setText(bookmark.getBookmarkTitle());
} else {
holder.txtPageTitle.setVisibility(View.GONE);
}
}
// Sub Title
holder.txtPageSubTitle = (TextView) row.findViewById(R.id.page_subtitle);
if (holder.txtPageSubTitle != null) {
if (showPage) {
holder.txtPageSubTitle.setVisibility(View.VISIBLE);
holder.txtPageSubTitle.setText(bookmark.getSubTitle());
} else {
holder.txtPageSubTitle.setVisibility(View.GONE);
}
}
}
public void refreshData() {
clear();
if (novel != null) {
addAll(NovelsDao.getInstance().getBookmarks(novel));
} else {
addAll(NovelsDao.getInstance().getAllBookmarks(UIHelper.getAllBookmarkOrder(context)));
}
notifyDataSetChanged();
Log.d(TAG, "Refreshing data...");
}
static class BookmarkModelHolder {
TextView txtPageTitle;
TextView txtPageSubTitle;
TextView txtPIndex;
TextView txtExcerpt;
TextView txtCreateDate;
CheckBox chkSelection;
}
}