108a079c3d2857e365736432b2691187767eb116fScott Kennedy/*
208a079c3d2857e365736432b2691187767eb116fScott Kennedy * Copyright (C) 2013 The Android Open Source Project
308a079c3d2857e365736432b2691187767eb116fScott Kennedy *
408a079c3d2857e365736432b2691187767eb116fScott Kennedy * Licensed under the Apache License, Version 2.0 (the "License");
508a079c3d2857e365736432b2691187767eb116fScott Kennedy * you may not use this file except in compliance with the License.
608a079c3d2857e365736432b2691187767eb116fScott Kennedy * You may obtain a copy of the License at
708a079c3d2857e365736432b2691187767eb116fScott Kennedy *
808a079c3d2857e365736432b2691187767eb116fScott Kennedy *      http://www.apache.org/licenses/LICENSE-2.0
908a079c3d2857e365736432b2691187767eb116fScott Kennedy *
1008a079c3d2857e365736432b2691187767eb116fScott Kennedy * Unless required by applicable law or agreed to in writing, software
1108a079c3d2857e365736432b2691187767eb116fScott Kennedy * distributed under the License is distributed on an "AS IS" BASIS,
1208a079c3d2857e365736432b2691187767eb116fScott Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1308a079c3d2857e365736432b2691187767eb116fScott Kennedy * See the License for the specific language governing permissions and
1408a079c3d2857e365736432b2691187767eb116fScott Kennedy * limitations under the License.
1508a079c3d2857e365736432b2691187767eb116fScott Kennedy */
1608a079c3d2857e365736432b2691187767eb116fScott Kennedypackage com.android.mail.utils;
1708a079c3d2857e365736432b2691187767eb116fScott Kennedy
1808a079c3d2857e365736432b2691187767eb116fScott Kennedyimport android.database.DataSetObservable;
1908a079c3d2857e365736432b2691187767eb116fScott Kennedyimport android.support.v4.util.SparseArrayCompat;
2008a079c3d2857e365736432b2691187767eb116fScott Kennedy
2108a079c3d2857e365736432b2691187767eb116fScott Kennedypublic class ObservableSparseArrayCompat<E> extends SparseArrayCompat<E> {
2208a079c3d2857e365736432b2691187767eb116fScott Kennedy    private final DataSetObservable mDataSetObservable;
2308a079c3d2857e365736432b2691187767eb116fScott Kennedy
2408a079c3d2857e365736432b2691187767eb116fScott Kennedy    public ObservableSparseArrayCompat() {
2508a079c3d2857e365736432b2691187767eb116fScott Kennedy        super();
2608a079c3d2857e365736432b2691187767eb116fScott Kennedy
2708a079c3d2857e365736432b2691187767eb116fScott Kennedy        mDataSetObservable = new DataSetObservable();
2808a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
2908a079c3d2857e365736432b2691187767eb116fScott Kennedy
3008a079c3d2857e365736432b2691187767eb116fScott Kennedy    public ObservableSparseArrayCompat(final int initialCapacity) {
3108a079c3d2857e365736432b2691187767eb116fScott Kennedy        super(initialCapacity);
3208a079c3d2857e365736432b2691187767eb116fScott Kennedy
3308a079c3d2857e365736432b2691187767eb116fScott Kennedy        mDataSetObservable = new DataSetObservable();
3408a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
3508a079c3d2857e365736432b2691187767eb116fScott Kennedy
3608a079c3d2857e365736432b2691187767eb116fScott Kennedy    public DataSetObservable getDataSetObservable() {
3708a079c3d2857e365736432b2691187767eb116fScott Kennedy        return mDataSetObservable;
3808a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
3908a079c3d2857e365736432b2691187767eb116fScott Kennedy
4008a079c3d2857e365736432b2691187767eb116fScott Kennedy    private void notifyChanged() {
4108a079c3d2857e365736432b2691187767eb116fScott Kennedy        mDataSetObservable.notifyChanged();
4208a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
4308a079c3d2857e365736432b2691187767eb116fScott Kennedy
4408a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
4508a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void append(final int key, final E value) {
4608a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.append(key, value);
4708a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
4808a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
4908a079c3d2857e365736432b2691187767eb116fScott Kennedy
5008a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
5108a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void clear() {
5208a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.clear();
5308a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
5408a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
5508a079c3d2857e365736432b2691187767eb116fScott Kennedy
5608a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
5708a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void delete(final int key) {
5808a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.delete(key);
5908a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
6008a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
6108a079c3d2857e365736432b2691187767eb116fScott Kennedy
6208a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
6308a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void put(final int key, final E value) {
6408a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.put(key, value);
6508a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
6608a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
6708a079c3d2857e365736432b2691187767eb116fScott Kennedy
6808a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
6908a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void remove(final int key) {
7008a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.remove(key);
7108a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
7208a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
7308a079c3d2857e365736432b2691187767eb116fScott Kennedy
7408a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
7508a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void removeAt(final int index) {
7608a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.removeAt(index);
7708a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
7808a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
7908a079c3d2857e365736432b2691187767eb116fScott Kennedy
8008a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
8108a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void removeAtRange(final int index, final int size) {
8208a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.removeAtRange(index, size);
8308a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
8408a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
8508a079c3d2857e365736432b2691187767eb116fScott Kennedy
8608a079c3d2857e365736432b2691187767eb116fScott Kennedy    @Override
8708a079c3d2857e365736432b2691187767eb116fScott Kennedy    public void setValueAt(final int index, final E value) {
8808a079c3d2857e365736432b2691187767eb116fScott Kennedy        super.setValueAt(index, value);
8908a079c3d2857e365736432b2691187767eb116fScott Kennedy        notifyChanged();
9008a079c3d2857e365736432b2691187767eb116fScott Kennedy    }
9108a079c3d2857e365736432b2691187767eb116fScott Kennedy}
92