blob: 803c45fc043c2c79a25dcc0bb021a2b3ed887d74 [file] [log] [blame]
package com.android.gallery3d.filtershow;
import java.util.Vector;
import com.android.gallery3d.filtershow.presets.ImagePreset;
import com.android.gallery3d.R;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class HistoryAdapter extends ArrayAdapter<ImagePreset> {
private static final String LOGTAG = "HistoryAdapter";
private int mCurrentPresetPosition = 0;
public void setCurrentPreset(int n) {
mCurrentPresetPosition = n;
this.notifyDataSetChanged();
}
public HistoryAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
}
public void reset() {
if (getCount() == 0) {
return;
}
ImagePreset first = getItem(getCount() - 1);
clear();
insert(first, 0);
}
public void insert(ImagePreset preset, int position) {
if (getCount() > position && getItem(position).same(preset)) {
return;
}
if (mCurrentPresetPosition != 0) {
// in this case, let's discount the presets before the current one
Vector<ImagePreset> oldItems = new Vector<ImagePreset>();
for (int i = mCurrentPresetPosition; i < getCount(); i++) {
oldItems.add(getItem(i));
}
clear();
for (int i = 0; i < oldItems.size(); i++) {
add(oldItems.elementAt(i));
}
mCurrentPresetPosition = position;
this.notifyDataSetChanged();
}
if (getCount() > position && getItem(position).same(preset)) {
return;
}
super.insert(preset, position);
mCurrentPresetPosition = position;
this.notifyDataSetChanged();
}
public int redo() {
mCurrentPresetPosition--;
if (mCurrentPresetPosition < 0) {
mCurrentPresetPosition = 0;
}
this.notifyDataSetChanged();
return mCurrentPresetPosition;
}
public int undo() {
mCurrentPresetPosition++;
if (mCurrentPresetPosition >= getCount()) {
mCurrentPresetPosition = getCount() - 1;
}
this.notifyDataSetChanged();
return mCurrentPresetPosition;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.filtershow_history_operation_row, null);
}
ImagePreset item = getItem(position);
if (item != null) {
TextView itemView = (TextView) view.findViewById(R.id.rowTextView);
if (itemView != null) {
itemView.setText(item.historyName());
}
ImageView markView = (ImageView) view.findViewById(R.id.selectedMark);
if (position == mCurrentPresetPosition) {
markView.setVisibility(View.VISIBLE);
} else {
markView.setVisibility(View.INVISIBLE);
}
ImageView typeView = (ImageView) view.findViewById(R.id.typeMark);
if (position == getCount() - 1) {
typeView.setImageResource(R.drawable.filtershow_button_origin);
} else if (item.historyName().equalsIgnoreCase("Border")) {
typeView.setImageResource(R.drawable.filtershow_button_border);
} else if (item.isFx()) {
typeView.setImageResource(R.drawable.filtershow_button_fx);
} else {
typeView.setImageResource(R.drawable.filtershow_button_settings);
}
}
return view;
}
}