package cm.aptoide.com.nostra13.universalimageloader.core;
import java.io.File;
import android.content.Context;
import android.graphics.Bitmap;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.DiscCacheAware;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.impl.FileCountLimitedDiscCache;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import cm.aptoide.com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import cm.aptoide.com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;
import cm.aptoide.com.nostra13.universalimageloader.cache.memory.impl.FuzzyKeyMemoryCache;
import cm.aptoide.com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import cm.aptoide.com.nostra13.universalimageloader.core.assist.MemoryCacheUtil;
import cm.aptoide.com.nostra13.universalimageloader.core.display.BitmapDisplayer;
import cm.aptoide.com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import cm.aptoide.com.nostra13.universalimageloader.core.download.ImageDownloader;
import cm.aptoide.com.nostra13.universalimageloader.core.download.URLConnectionImageDownloader;
import cm.aptoide.com.nostra13.universalimageloader.utils.StorageUtils;
/**
* Factory for providing of default options for {@linkplain ImageLoaderConfiguration configuration}
*
* @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
*/
public class DefaultConfigurationFactory {
/** Create {@linkplain HashCodeFileNameGenerator default implementation} of FileNameGenerator */
public static FileNameGenerator createFileNameGenerator() {
return new HashCodeFileNameGenerator();
}
/** Create default implementation of {@link DisckCacheAware} depends on incoming parameters */
public static DiscCacheAware createDiscCache(Context context, FileNameGenerator discCacheFileNameGenerator, int discCacheSize, int discCacheFileCount) {
if (discCacheSize > 0) {
File individualCacheDir = StorageUtils.getIndividualCacheDirectory(context);
return new TotalSizeLimitedDiscCache(individualCacheDir, discCacheFileNameGenerator, discCacheSize);
} else if (discCacheFileCount > 0) {
File individualCacheDir = StorageUtils.getIndividualCacheDirectory(context);
return new FileCountLimitedDiscCache(individualCacheDir, discCacheFileNameGenerator, discCacheFileCount);
} else {
File cacheDir = StorageUtils.getCacheDirectory(context);
return new UnlimitedDiscCache(cacheDir, discCacheFileNameGenerator);
}
}
/** Create default implementation of {@link MemoryCacheAware} depends on incoming parameters */
public static MemoryCacheAware<String, Bitmap> createMemoryCache(int memoryCacheSize, boolean denyCacheImageMultipleSizesInMemory) {
MemoryCacheAware<String, Bitmap> memoryCache = new UsingFreqLimitedMemoryCache(memoryCacheSize);
if (denyCacheImageMultipleSizesInMemory) {
memoryCache = new FuzzyKeyMemoryCache<String, Bitmap>(memoryCache, MemoryCacheUtil.createFuzzyKeyComparator());
}
return memoryCache;
}
/** Create default implementation of {@link ImageDownloader} */
public static ImageDownloader createImageDownloader() {
return new URLConnectionImageDownloader();
}
/** Create default implementation of {@link BitmapDisplayer} */
public static BitmapDisplayer createBitmapDisplayer() {
return new SimpleBitmapDisplayer();
}
}