package com.openfarmanager.android.adapters;
import com.openfarmanager.android.App;
import com.openfarmanager.android.R;
import com.openfarmanager.android.core.Settings;
import com.openfarmanager.android.core.archive.ArchiveScanner;
import com.openfarmanager.android.filesystem.ArchiveFile;
import com.openfarmanager.android.filesystem.FileProxy;
import java.util.ArrayList;
import java.util.List;
/**
* @author Vlad Namashko
*/
public class ArchiveAdapter extends FileSystemAdapter {
private List<FileProxy> mArchiveEntries;
private ArchiveScanner.File mCurrentLevelParent;
public ArchiveAdapter(ArchiveScanner.File node) {
setItems(node);
}
public void setItems(ArchiveScanner.File node) {
mArchiveEntries = new ArrayList<>();
mCurrentLevelParent = node;
if (node != null && node.getSortedChildren() != null && !node.getSortedChildren().isEmpty()) {
for (ArchiveScanner.File file : node.getSortedChildren()) {
mArchiveEntries.add(new ArchiveFile(file));
}
}
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return mArchiveEntries.size() + 1;
}
@Override
public Object getItem(int i) {
if (i == 0) {
return new ArchiveFile(ArchiveScanner.File.createUpperNode(mCurrentLevelParent));
}
return mArchiveEntries.get(i - 1);
}
@Override
protected void bindView(ViewHolder holder, final int position) {
FileProxy item = (FileProxy) getItem(position);
holder.name.setText(item.getName());
Settings settings = App.sInstance.getSettings();
if (mSelectedFiles.contains(item)) {
holder.name.setTextColor(settings.getSecondaryColor());
holder.info.setTextColor(settings.getSecondaryColor());
} else if (item.isDirectory()) {
holder.name.setTextColor(settings.getFolderColor());
holder.info.setTextColor(settings.getFolderColor());
} else {
holder.name.setTextColor(settings.getTextColor());
holder.info.setTextColor(settings.getTextColor());
}
holder.configureCell(settings);
if (item.isRoot()) {
holder.info.setText(R.string.folder_root);
} else if (item.isUpNavigator()) {
holder.info.setText(R.string.folder_up);
} else if (item.isDirectory()) {
holder.info.setText(R.string.folder);
} else {
holder.info.setText(formatSize(item.getSize()));
}
}
}