summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/HistoryAdapter.java
blob: 803c45fc043c2c79a25dcc0bb021a2b3ed887d74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

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;
    }
}