212 lines
7.3 KiB
Java
212 lines
7.3 KiB
Java
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<WeakReference<AppCompatDelegate>> 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<WeakReference<AppCompatDelegate>> 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<WeakReference<AppCompatDelegate>> 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 extends View> 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);
|
|
}
|