package com.pan.materialdrawer.util;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.ImageView;
/**
* Created by mikepenz on 24.03.15.
*/
public class DrawerImageLoader {
public enum Tags {
PROFILE,
PROFILE_DRAWER_ITEM,
ACCOUNT_HEADER
}
private static DrawerImageLoader SINGLETON = null;
private IDrawerImageLoader imageLoader;
private DrawerImageLoader(IDrawerImageLoader loaderImpl) {
imageLoader = loaderImpl;
}
public static DrawerImageLoader init(IDrawerImageLoader loaderImpl) {
SINGLETON = new DrawerImageLoader(loaderImpl);
return SINGLETON;
}
public static DrawerImageLoader getInstance() {
if (SINGLETON == null) {
SINGLETON = new DrawerImageLoader(new AbstractDrawerImageLoader() {
});
}
return SINGLETON;
}
public void setImage(ImageView imageView, Uri uri, String tag) {
if (imageLoader != null) {
Drawable placeHolder = imageLoader.placeholder(imageView.getContext(), tag);
imageLoader.set(imageView, uri, placeHolder);
}
}
public void cancelImage(ImageView imageView) {
if (imageLoader != null) {
imageLoader.cancel(imageView);
}
}
public IDrawerImageLoader getImageLoader() {
return imageLoader;
}
public void setImageLoader(IDrawerImageLoader imageLoader) {
this.imageLoader = imageLoader;
}
public interface IDrawerImageLoader {
void set(ImageView imageView, Uri uri, Drawable placeholder);
void cancel(ImageView imageView);
Drawable placeholder(Context ctx);
/**
* @param ctx
* @param tag current possible tags: "profile", "profileDrawerItem", "accountHeader"
* @return
*/
Drawable placeholder(Context ctx, String tag);
}
}