package com.erakk.lnreader.adapter;
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import com.erakk.lnreader.R;
import com.erakk.lnreader.dao.NovelsDao;
import com.erakk.lnreader.helper.Util;
import com.erakk.lnreader.model.PageModel;
import java.util.List;
public class SearchPageModelAdapter extends PageModelAdapter {
private static final String TAG = SearchPageModelAdapter.class.toString();
private final Context context;
private final int layoutResourceId;
public List<PageModel> data;
public SearchPageModelAdapter(Context context, int resourceId, List<PageModel> objects) {
super(context, resourceId, objects);
this.layoutResourceId = resourceId;
this.context = context;
this.data = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final PageModel page = data.get(position);
View view = convertView;
SearchPageModelHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(layoutResourceId, parent, false);
holder = new SearchPageModelHolder();
holder.txtNovel = (TextView) view.findViewById(R.id.novel_name);
holder.txtLastUpdate = (TextView) view.findViewById(R.id.novel_last_update);
holder.txtLastCheck = (TextView) view.findViewById(R.id.novel_last_check);
holder.chkIsWatched = (CheckBox) view.findViewById(R.id.novel_is_watched);
view.setTag(holder);
}
else {
holder = (SearchPageModelHolder) view.getTag();
}
if (holder.txtNovel != null) {
String title = resolveTitle(page);
holder.txtNovel.setText(title);
if (page.isHighlighted()) {
holder.txtNovel.setTypeface(null, Typeface.BOLD);
holder.txtNovel.setTextSize(18);
}
}
if (holder.txtLastUpdate != null) {
holder.txtLastUpdate.setText(context.getResources().getString(R.string.last_update) + ": " + Util.formatDateForDisplay(context, page.getLastUpdate()));
}
if (holder.txtLastCheck != null) {
holder.txtLastCheck.setText(context.getResources().getString(R.string.last_check) + ": " + Util.formatDateForDisplay(context, page.getLastCheck()));
}
if (holder.chkIsWatched != null) {
holder.chkIsWatched.setTag(page.getPage());
if (page.getType().equalsIgnoreCase(PageModel.TYPE_NOVEL)) {
holder.chkIsWatched.setVisibility(View.VISIBLE);
holder.chkIsWatched.setChecked(page.isWatched());
holder.chkIsWatched.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.getTag() == page.getPage()) {
if (isChecked) {
Toast.makeText(context, "Added to watch list: " + page.getTitle(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Removed from watch list: " + page.getTitle(), Toast.LENGTH_SHORT).show();
}
page.setWatched(isChecked);
NovelsDao.getInstance().updatePageModel(page);
}
}
});
} else {
holder.chkIsWatched.setVisibility(View.GONE);
}
}
return view;
}
/**
* @param page
* @return
*/
private String resolveTitle(final PageModel page) {
String title;
if (page.getType().equalsIgnoreCase(PageModel.TYPE_NOVEL)) {
title = page.getTitle();
} else {
// novel name
try {
title = page.getParentPageModel().getTitle() + ": ";
} catch (Exception e) {
Log.e(TAG, "Unable to get novel name: " + page.getParent(), e);
title = "Chapter: ";
}
// book name
title += " " + page.getBookTitle();
// chapter name
title += "\n\t" + page.getTitle();
}
return title;
}
static class SearchPageModelHolder {
TextView txtNovel;
TextView txtLastUpdate;
TextView txtLastCheck;
CheckBox chkIsWatched;
}
}