package com.masterofcode.android.magreader.adapters;
import java.util.Iterator;
import java.util.List;
import org.kroz.activerecord.ActiveRecordBase;
import org.kroz.activerecord.ActiveRecordException;
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.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.masterofcode.android.magreader.MainShopActivity;
import com.masterofcode.android.magreader.application.JtjApplication;
import com.masterofcode.android.magreader.db.entity.IssueItem;
import com.masterofcode.android.magreader.db.entity.LibraryItem;
import com.masterofcode.android.magreader.utils.ApplicationUtils;
import com.masterofcode.android.magreader.utils.ImageLoader;
import com.masterofcode.android.magreader.utils.constants.Constants;
import com.sandsmedia.apps.mobile.android.epub.lib.R;
public class GridOfIssuesAdapter extends BaseAdapter {
private Context mContext;
private List<IssueItem> issues;
private LayoutInflater inflater;
private int inc = 0;
private ImageLoader imageLoader;
private ActiveRecordBase dbLibrary;
private List<LibraryItem> libraryItems;
public GridOfIssuesAdapter(Context mContext, List<IssueItem> issues, Activity activity){
this.mContext = mContext;
this.issues = issues;
imageLoader = new ImageLoader(mContext, activity);
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.dbLibrary = JtjApplication.getInstance().getLibraryDatabase();
try {
if(!dbLibrary.isOpen()) dbLibrary.open();
List<LibraryItem> mLibraryItem = dbLibrary.findAll(LibraryItem.class);
Log.i("MagazinReader", "Loaded " + mLibraryItem.size() + " LibraryItems");
libraryItems = mLibraryItem;
dbLibrary.close();
} catch (ActiveRecordException e) {
e.printStackTrace();
}
}
public static class ViewHolder{
public TextView issueDate;
public TextView issuePrice;
public ImageView issueImage;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
int numColumn = 0;
int remainder = 0;
if (ApplicationUtils.isLandscape(mContext)){
if (MainShopActivity.isClicedItem){
if (issues.size() % 2 != 0)
inc = 1;
else
inc = 0;
} else {
numColumn = (ApplicationUtils.getCurrentScreenWidth(mContext) + 14) / 220;
remainder = issues.size() % numColumn;
if (remainder == 0){
inc = 0;
} else {
inc = numColumn - remainder;
}
}
} else {
if (MainShopActivity.isClicedItem){
inc = 0;
} else {
numColumn = (ApplicationUtils.getCurrentScreenWidth(mContext) + 14) / 220;
remainder = issues.size() % numColumn;
if (remainder == 0){
inc = 0;
} else {
inc = numColumn - remainder;
}
}
}
return issues.size() + inc;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
ViewHolder holder;
//try to inflate the view
if(v == null){
try
{
v = inflater.inflate(R.layout.shop_grid_item, null);
}
catch (NullPointerException npe)
{
npe.printStackTrace();
}
holder = new ViewHolder();
holder.issueDate = (TextView) v.findViewById(R.id.dateTextView);
holder.issuePrice = (TextView) v.findViewById(R.id.priceTextView);
holder.issueImage = (ImageView) v.findViewById(R.id.issue_image);
v.setTag(holder);
} else
holder = (ViewHolder)v.getTag();
Log.d("adapter", "position= " + position + " " + holder.toString());
if (position < issues.size()){
IssueItem issue = issues.get(position);
/*if (((MainShopActivity) getActivity()).getmCurrentItemPosition() == position){
View rLayout = v.findViewById(R.id.issueGridItemRelativeLay);
rLayout.setBackgroundColor(R.color.gray);
}*/
if (holder.issueDate != null) {
if ((issue.title != null) && (issue.title != "")) {
holder.issueDate.setText(issue.title);
} else {
holder.issueDate.setText(ApplicationUtils.getPublicationDate(issue.publicationDate));
}
holder.issueDate.setVisibility(View.VISIBLE);
};
if (holder.issuePrice != null) {
Log.i("MagazinReader", "Checking if this issue has been installed already to the library: " + issue.issueID);
if (issue.issueID != null) {
for (Iterator libraryItemsIterator = libraryItems.iterator(); libraryItemsIterator
.hasNext();) {
LibraryItem libItem = (LibraryItem) libraryItemsIterator.next();
if ((libItem.magazine_id != null) && (libItem.magazine_id.equals(issue.issueID))) {
if (Constants.Debug) {
Log.i("MagazinReader", "We found an issue from shop which was already installed: " + libItem.magazine_id);
Log.i("MagazinReader", "Implement change here!!!!");
}
//Set the button to read here, read button should open the issue as if i would click on read iin library view
}
}
}
if(!issue.downloadable){
if(!issue.isBuyed){
holder.issuePrice.setText("€" + issue.androidreadergooglecheckoutprice);
} else {
if(!issue.isDownloaded){
holder.issuePrice.setText("DOWNLOAD");
} else {
holder.issuePrice.setText("READ");
}
}
}
else{
holder.issuePrice.setBackgroundResource(R.drawable.shop_yellow_price_rec);
if(!issue.isBuyed){
holder.issuePrice.setText("FREE");
} else {
if(!issue.isDownloaded){
holder.issuePrice.setText("DOWNLOAD");
} else {
holder.issuePrice.setText("READ");
}
}
}
};
if (holder.issueImage != null) {
holder.issueImage.setTag(issue.detailCoverUrl);
imageLoader.displayImage( issue.detailCoverUrl, holder.issueImage);
holder.issueImage.setVisibility(View.VISIBLE);
}
}
if (position > issues.size() || position == issues.size()) {
try {
holder.issueImage.setVisibility(View.GONE);
holder.issueDate.setVisibility(View.GONE);
holder.issuePrice.setVisibility(View.GONE);
}
catch (NullPointerException npe) {
npe.printStackTrace();
}
}
return v;
}
}