package org.ebookdroid.ui.library.adapters;
import org.sufficientlysecure.viewer.R;
import org.ebookdroid.ui.library.IBrowserActivity;
import org.ebookdroid.ui.library.adapters.BooksAdapter.ViewHolder;
import android.database.DataSetObserver;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.List;
import org.emdev.ui.adapters.BaseViewHolder;
import org.emdev.utils.FileUtils;
import org.emdev.utils.StringUtils;
public class BookShelfAdapter extends BaseAdapter {
private final IBrowserActivity base;
private final IdentityHashMap<DataSetObserver, DataSetObserver> observers = new IdentityHashMap<DataSetObserver, DataSetObserver>();
public final int id;
public final String name;
public final String path;
public final String mpath;
final List<BookNode> nodes = new ArrayList<BookNode>();
public boolean measuring = false;
public BookShelfAdapter(final IBrowserActivity base, final int index, final String name, final String path) {
this.base = base;
this.id = index;
this.name = name;
this.path = path;
this.mpath = FileUtils.invertMountPrefix(path);
}
@Override
public int getCount() {
return nodes.size();
}
@Override
public Object getItem(final int position) {
return nodes.get(position);
}
@Override
public long getItemId(final int position) {
return position;
}
@Override
public View getView(final int position, final View view, final ViewGroup parent) {
final ViewHolder holder = BaseViewHolder.getOrCreateViewHolder(ViewHolder.class, R.layout.thumbnail, view,
parent);
final BookNode node = nodes.get(position);
if (!measuring) {
holder.textView.setText(StringUtils.cleanupTitle(node.name));
base.loadThumbnail(node.path, holder.imageView, R.drawable.recent_item_book);
}
return holder.getView();
}
public String getPath() {
return path;
}
@Override
public void registerDataSetObserver(final DataSetObserver observer) {
if (!observers.containsKey(observer)) {
super.registerDataSetObserver(observer);
observers.put(observer, observer);
}
}
@Override
public void unregisterDataSetObserver(final DataSetObserver observer) {
if (null != observers.remove(observer)) {
super.unregisterDataSetObserver(observer);
}
}
}