package com.bumptech.glide;
import android.annotation.TargetApi;
import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.widget.ImageView;
import com.bumptech.glide.load.engine.Engine;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.ImageViewTargetFactory;
import com.bumptech.glide.request.target.Target;
/**
* Global context for all loads in Glide containing and exposing the various registries and classes
* required to load resources.
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class GlideContext extends ContextWrapper implements ComponentCallbacks2 {
private final Handler mainHandler;
private final Registry registry;
private final ImageViewTargetFactory imageViewTargetFactory;
private final RequestOptions defaultRequestOptions;
private final Engine engine;
private final ComponentCallbacks2 componentCallbacks;
private final int logLevel;
public GlideContext(Context context, Registry registry,
ImageViewTargetFactory imageViewTargetFactory, RequestOptions defaultRequestOptions,
Engine engine, ComponentCallbacks2 componentCallbacks, int logLevel) {
super(context.getApplicationContext());
this.registry = registry;
this.imageViewTargetFactory = imageViewTargetFactory;
this.defaultRequestOptions = defaultRequestOptions;
this.engine = engine;
this.componentCallbacks = componentCallbacks;
this.logLevel = logLevel;
mainHandler = new Handler(Looper.getMainLooper());
}
public RequestOptions getDefaultRequestOptions() {
return defaultRequestOptions;
}
public <X> Target<X> buildImageViewTarget(ImageView imageView, Class<X> transcodeClass) {
return imageViewTargetFactory.buildTarget(imageView, transcodeClass);
}
public Handler getMainHandler() {
return mainHandler;
}
public Engine getEngine() {
return engine;
}
public Registry getRegistry() {
return registry;
}
public int getLogLevel() {
return logLevel;
}
@Override
public void onTrimMemory(int level) {
componentCallbacks.onTrimMemory(level);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
componentCallbacks.onConfigurationChanged(newConfig);
}
@Override
public void onLowMemory() {
componentCallbacks.onLowMemory();
}
}