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