94 lines
3.2 KiB
Java
94 lines
3.2 KiB
Java
package androidx.constraintlayout.widget;
|
|
|
|
import android.util.SparseIntArray;
|
|
import java.lang.ref.WeakReference;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Iterator;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class SharedValues {
|
|
public static final int UNSET = -1;
|
|
private SparseIntArray mValues = new SparseIntArray();
|
|
private HashMap<Integer, HashSet<WeakReference<SharedValuesListener>>> mValuesListeners = new HashMap<>();
|
|
|
|
public interface SharedValuesListener {
|
|
void onNewValue(int key, int newValue, int oldValue);
|
|
}
|
|
|
|
public void addListener(int key, SharedValuesListener listener) {
|
|
HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key));
|
|
if (hashSet == null) {
|
|
hashSet = new HashSet<>();
|
|
this.mValuesListeners.put(Integer.valueOf(key), hashSet);
|
|
}
|
|
hashSet.add(new WeakReference<>(listener));
|
|
}
|
|
|
|
public void removeListener(int key, SharedValuesListener listener) {
|
|
HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key));
|
|
if (hashSet == null) {
|
|
return;
|
|
}
|
|
ArrayList arrayList = new ArrayList();
|
|
Iterator<WeakReference<SharedValuesListener>> it = hashSet.iterator();
|
|
while (it.hasNext()) {
|
|
WeakReference<SharedValuesListener> next = it.next();
|
|
SharedValuesListener sharedValuesListener = next.get();
|
|
if (sharedValuesListener == null || sharedValuesListener == listener) {
|
|
arrayList.add(next);
|
|
}
|
|
}
|
|
hashSet.removeAll(arrayList);
|
|
}
|
|
|
|
public void removeListener(SharedValuesListener listener) {
|
|
Iterator<Integer> it = this.mValuesListeners.keySet().iterator();
|
|
while (it.hasNext()) {
|
|
removeListener(it.next().intValue(), listener);
|
|
}
|
|
}
|
|
|
|
public void clearListeners() {
|
|
this.mValuesListeners.clear();
|
|
}
|
|
|
|
public int getValue(int key) {
|
|
return this.mValues.get(key, -1);
|
|
}
|
|
|
|
public void fireNewValue(int key, int value) {
|
|
int i = this.mValues.get(key, -1);
|
|
if (i == value) {
|
|
return;
|
|
}
|
|
this.mValues.put(key, value);
|
|
HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key));
|
|
if (hashSet == null) {
|
|
return;
|
|
}
|
|
Iterator<WeakReference<SharedValuesListener>> it = hashSet.iterator();
|
|
boolean z = false;
|
|
while (it.hasNext()) {
|
|
SharedValuesListener sharedValuesListener = it.next().get();
|
|
if (sharedValuesListener != null) {
|
|
sharedValuesListener.onNewValue(key, value, i);
|
|
} else {
|
|
z = true;
|
|
}
|
|
}
|
|
if (z) {
|
|
ArrayList arrayList = new ArrayList();
|
|
Iterator<WeakReference<SharedValuesListener>> it2 = hashSet.iterator();
|
|
while (it2.hasNext()) {
|
|
WeakReference<SharedValuesListener> next = it2.next();
|
|
if (next.get() == null) {
|
|
arrayList.add(next);
|
|
}
|
|
}
|
|
hashSet.removeAll(arrayList);
|
|
}
|
|
}
|
|
}
|