package cw.kop.autobackground.history;
import android.app.Activity;
import android.graphics.PorterDuff;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.io.FilenameFilter;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import cw.kop.autobackground.R;
import cw.kop.autobackground.images.HistoryItem;
import cw.kop.autobackground.settings.AppSettings;
/**
* Created by TheKeeperOfPie on 4/11/2015.
*/
public class AdapterHistory extends RecyclerView.Adapter<AdapterHistory.ViewHolder> {
private static final String TAG = AdapterHistory.class.getCanonicalName();
private Activity activity;
private HistoryItemClickListener clickListener;
private ArrayList<HistoryItem> historyItems;
private int colorFilterInt;
public AdapterHistory(Activity activity, HistoryItemClickListener clickListener) {
this.activity = activity;
this.clickListener = clickListener;
colorFilterInt = AppSettings.getColorFilterInt(activity);
historyItems = new ArrayList<>();
AppSettings.checkUsedLinksSize();
Set<String> usedLinks = AppSettings.getUsedLinks();
Log.d(TAG, "usedLinks size: " + usedLinks.size());
for (String link : usedLinks) {
long time = 0;
String url = "Error";
try {
url = link.substring(0, link.lastIndexOf("Time:"));
time = Long.parseLong(link.substring(link.lastIndexOf("Time:") + 5));
}
catch (Exception e) {
e.printStackTrace();
}
historyItems.add(new HistoryItem(time,
url,
new File(AppSettings.getDownloadPath() + "/HistoryCache/" + time + ".png")));
}
Collections.sort(historyItems);
Log.d(TAG, "historyItems size: " + historyItems.size());
for (HistoryItem item : historyItems) {
Log.d(TAG, "HistoryItem: " + item.toString());
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.file_row, parent, false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
File thumbnailFile = new File(AppSettings.getDownloadPath() + "/HistoryCache/"
+ historyItems.get(position).getTime() + ".png");
if (thumbnailFile.exists() && thumbnailFile.isFile()) {
holder.fileImage.clearColorFilter();
Picasso.with(activity)
.load(thumbnailFile)
.into(holder.fileImage);
}
else {
holder.fileImage.setColorFilter(colorFilterInt, PorterDuff.Mode.MULTIPLY);
holder.fileImage.setImageResource(R.drawable.ic_insert_drive_file_white_24dp);
}
holder.fileTitle.setText(DateFormat.getDateTimeInstance().format(new Date(historyItems.get(
position).getTime())));
holder.fileSummary.setText(historyItems.get(position).getUrl());
}
@Override
public int getItemCount() {
return historyItems.size();
}
public HistoryItem getItem(int position) {
return historyItems.get(position);
}
public void clearHistory() {
historyItems = new ArrayList<>();
File historyDir = new File(AppSettings.getDownloadPath() + "/HistoryCache");
historyDir.mkdirs();
FilenameFilter imageFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.endsWith(".png");
}
};
for (File file : historyDir.listFiles(imageFilter)) {
if (file.exists() && file.isFile()) {
file.delete();
}
}
notifyDataSetChanged();
}
public void removeItem(HistoryItem item) {
File file = new File(AppSettings.getDownloadPath() + "/HistoryCache/" + item.getTime() + ".png");
if (file.exists() && file.isFile()) {
file.delete();
}
historyItems.remove(item);
notifyDataSetChanged();
}
public void saveHistory() {
new Thread(new Runnable() {
@Override
public void run() {
HashSet<String> usedLinks = new HashSet<>();
for (HistoryItem item : historyItems) {
usedLinks.add(item.getUrl() + "Time:" + item.getTime());
}
AppSettings.setUsedLinks(usedLinks);
}
}).start();
}
protected class ViewHolder extends RecyclerView.ViewHolder {
protected final TextView fileTitle;
protected final TextView fileSummary;
protected final ImageView fileImage;
public ViewHolder(View itemView) {
super(itemView);
fileTitle = (TextView) itemView.findViewById(R.id.file_title);
fileSummary = (TextView) itemView.findViewById(R.id.file_summary);
fileImage = (ImageView) itemView.findViewById(R.id.file_image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.onItemClick(getPosition());
}
});
}
}
public interface HistoryItemClickListener {
void onItemClick(int position);
}
}