package cw.kop.autobackground.images;
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.google.api.services.drive.model.File;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import cw.kop.autobackground.R;
import cw.kop.autobackground.settings.AppSettings;
/**
* Created by TheKeeperOfPie on 4/11/2015.
*/
public class AdapterDrive extends RecyclerView.Adapter<AdapterDrive.ViewHolder> {
private static final int BYTE_TO_MEBIBYTE = 1048576;
private static final String TAG = AdapterDrive.class.getCanonicalName();
private List<File> entries;
private File mainDir;
private File topDir;
private int colorFilterInt;
private boolean finished;
private FolderCallback folderCallback;
public AdapterDrive(Activity activity, FolderCallback folderCallback) {
this.folderCallback = folderCallback;
colorFilterInt = AppSettings.getColorFilterInt(activity);
}
@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 file = entries.get(position);
if (file.getMimeType().equals("application/vnd.google-apps.folder")) {
holder.fileImage.setImageResource(R.drawable.ic_folder_white_24dp);
holder.fileSummary.setText(file.getDescription());
}
else {
holder.fileImage.setImageResource(R.drawable.ic_insert_drive_file_white_24dp);
holder.fileSummary.setText(file.getFileSize() != null ? String.valueOf(file.getFileSize() / BYTE_TO_MEBIBYTE) + " MiB" : null);
}
holder.fileTitle.setText(file.getTitle());
}
@Override
public int getItemCount() {
return entries.size();
}
public File getMainDir() {
return mainDir;
}
public void setDirs(File topDir, File mainDir, List<File> entries) {
this.topDir = topDir;
setDir(mainDir, entries);
}
public void setDir(File mainDir, List<File> entries) {
this.mainDir = mainDir;
this.entries = entries;
Collections.sort(entries,
new Comparator<File>() {
@Override
public int compare(com.google.api.services.drive.model.File lhs,
com.google.api.services.drive.model.File rhs) {
if (lhs.getMimeType()
.equals("application/vnd.google-apps.folder") ^
rhs.getMimeType()
.equals("application/vnd.google-apps.folder")) {
return lhs.getMimeType()
.equals("application/vnd.google-apps.folder") ? -1 : 1;
}
return lhs.getTitle()
.compareTo(rhs.getTitle());
}
});
notifyDataSetChanged();
}
public void setFinished(boolean finished) {
this.finished = finished;
}
public Boolean backDirectory() {
return finished || topDir.getId().equals(mainDir.getId());
}
public File getItem(int positionInList) {
return entries.get(positionInList);
}
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);
fileImage.setColorFilter(colorFilterInt, PorterDuff.Mode.MULTIPLY);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
folderCallback.onItemClick(getPosition());
}
});
}
}
}