package androidx.appcompat.app; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.util.AttributeSet; import android.util.Log; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import androidx.annotation.CallSuper; import androidx.annotation.IdRes; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.RestrictTo; import androidx.annotation.StyleRes; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.VectorEnabledTintResources; import androidx.collection.ArraySet; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.Iterator; public abstract class AppCompatDelegate { public static final boolean DEBUG = false; public static final int FEATURE_ACTION_MODE_OVERLAY = 10; public static final int FEATURE_SUPPORT_ACTION_BAR = 108; public static final int FEATURE_SUPPORT_ACTION_BAR_OVERLAY = 109; @Deprecated public static final int MODE_NIGHT_AUTO = 0; public static final int MODE_NIGHT_AUTO_BATTERY = 3; @Deprecated public static final int MODE_NIGHT_AUTO_TIME = 0; public static final int MODE_NIGHT_FOLLOW_SYSTEM = -1; public static final int MODE_NIGHT_NO = 1; public static final int MODE_NIGHT_UNSPECIFIED = -100; public static final int MODE_NIGHT_YES = 2; public static final String TAG = "AppCompatDelegate"; private static final ArraySet> sActivityDelegates = new ArraySet<>(); private static final Object sActivityDelegatesLock = new Object(); private static int sDefaultNightMode = -100; @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public @interface NightMode { } public static void addActiveDelegate(@NonNull AppCompatDelegate appCompatDelegate) { synchronized (sActivityDelegatesLock) { removeDelegateFromActives(appCompatDelegate); sActivityDelegates.add(new WeakReference<>(appCompatDelegate)); } } private static void applyDayNightToActiveDelegates() { synchronized (sActivityDelegatesLock) { Iterator> it = sActivityDelegates.iterator(); while (it.hasNext()) { AppCompatDelegate appCompatDelegate = it.next().get(); if (appCompatDelegate != null) { appCompatDelegate.applyDayNight(); } } } } @NonNull public static AppCompatDelegate create(@NonNull Activity activity, @Nullable AppCompatCallback appCompatCallback) { return new AppCompatDelegateImpl(activity, appCompatCallback); } @NonNull public static AppCompatDelegate create(@NonNull Dialog dialog, @Nullable AppCompatCallback appCompatCallback) { return new AppCompatDelegateImpl(dialog, appCompatCallback); } @NonNull public static AppCompatDelegate create(@NonNull Context context, @NonNull Activity activity, @Nullable AppCompatCallback appCompatCallback) { return new AppCompatDelegateImpl(context, activity, appCompatCallback); } @NonNull public static AppCompatDelegate create(@NonNull Context context, @NonNull Window window, @Nullable AppCompatCallback appCompatCallback) { return new AppCompatDelegateImpl(context, window, appCompatCallback); } public static int getDefaultNightMode() { return sDefaultNightMode; } public static boolean isCompatVectorFromResourcesEnabled() { return VectorEnabledTintResources.isCompatVectorFromResourcesEnabled(); } public static void removeActivityDelegate(@NonNull AppCompatDelegate appCompatDelegate) { synchronized (sActivityDelegatesLock) { removeDelegateFromActives(appCompatDelegate); } } private static void removeDelegateFromActives(@NonNull AppCompatDelegate appCompatDelegate) { synchronized (sActivityDelegatesLock) { Iterator> it = sActivityDelegates.iterator(); while (it.hasNext()) { AppCompatDelegate appCompatDelegate2 = it.next().get(); if (appCompatDelegate2 == appCompatDelegate || appCompatDelegate2 == null) { it.remove(); } } } } public static void setCompatVectorFromResourcesEnabled(boolean z2) { VectorEnabledTintResources.setCompatVectorFromResourcesEnabled(z2); } public static void setDefaultNightMode(int i) { if (i != -1 && i != 0 && i != 1 && i != 2 && i != 3) { Log.d(TAG, "setDefaultNightMode() called with an unknown mode"); } else if (sDefaultNightMode != i) { sDefaultNightMode = i; applyDayNightToActiveDelegates(); } } public abstract void addContentView(View view, ViewGroup.LayoutParams layoutParams); public abstract boolean applyDayNight(); @Deprecated public void attachBaseContext(Context context) { } @NonNull @CallSuper public Context attachBaseContext2(@NonNull Context context) { attachBaseContext(context); return context; } public abstract View createView(@Nullable View view, String str, @NonNull Context context, @NonNull AttributeSet attributeSet); @Nullable public abstract T findViewById(@IdRes int i); @Nullable public abstract ActionBarDrawerToggle.Delegate getDrawerToggleDelegate(); public int getLocalNightMode() { return -100; } public abstract MenuInflater getMenuInflater(); @Nullable public abstract ActionBar getSupportActionBar(); public abstract boolean hasWindowFeature(int i); public abstract void installViewFactory(); public abstract void invalidateOptionsMenu(); public abstract boolean isHandleNativeActionModesEnabled(); public abstract void onConfigurationChanged(Configuration configuration); public abstract void onCreate(Bundle bundle); public abstract void onDestroy(); public abstract void onPostCreate(Bundle bundle); public abstract void onPostResume(); public abstract void onSaveInstanceState(Bundle bundle); public abstract void onStart(); public abstract void onStop(); public abstract boolean requestWindowFeature(int i); public abstract void setContentView(@LayoutRes int i); public abstract void setContentView(View view); public abstract void setContentView(View view, ViewGroup.LayoutParams layoutParams); public abstract void setHandleNativeActionModesEnabled(boolean z2); @RequiresApi(17) public abstract void setLocalNightMode(int i); public abstract void setSupportActionBar(@Nullable Toolbar toolbar); public void setTheme(@StyleRes int i) { } public abstract void setTitle(@Nullable CharSequence charSequence); @Nullable public abstract ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback); }