package com.jasonchen.microlang.workers;
import android.graphics.drawable.ColorDrawable;
import android.widget.ImageView;
import com.jasonchen.microlang.debug.DebugColor;
import com.jasonchen.microlang.utils.TaskCache;
import com.jasonchen.microlang.utils.file.FileLocationMethod;
import com.jasonchen.microlang.utils.file.FileManager;
import com.jasonchen.microlang.utils.image.ImageUtility;
import com.jasonchen.microlang.view.TimeLineImageView;
import java.lang.ref.WeakReference;
/**
* jasonchen
* 2015/04/10
*/
public class SyncSizeLocalOrNetworkChooseWorker extends AbstractWorker<String, Integer, Boolean> {
private String data = "";
private boolean isMultiPictures = false;
private WeakReference<ImageView> viewWeakReference;
private FileLocationMethod method;
private TimeLineImageView IWeiciyuanDrawable;
public String getUrl() {
return data;
}
public SyncSizeLocalOrNetworkChooseWorker(ImageView view, String url, FileLocationMethod method,
boolean isMultiPictures) {
this.viewWeakReference = new WeakReference<ImageView>(view);
this.data = url;
this.method = method;
this.isMultiPictures = isMultiPictures;
}
public SyncSizeLocalOrNetworkChooseWorker(TimeLineImageView view, String url,
FileLocationMethod method,
boolean isMultiPictures) {
this(view.getImageView(), url, method, false);
this.IWeiciyuanDrawable = view;
this.isMultiPictures = isMultiPictures;
}
@Override
protected Boolean doInBackground(String... url) {
String path = FileManager.getFilePathFromUrl(data, method);
return ImageUtility.isThisBitmapCanRead(path) && TaskCache.isThisUrlTaskFinished(data);
}
@Override
protected void onCancelled(Boolean aBoolean) {
super.onCancelled(aBoolean);
ImageView imageView = viewWeakReference.get();
if (!isMySelf(imageView)) {
return;
}
imageView.setImageDrawable(
new ColorDrawable(DebugColor.CHOOSE_CANCEL));
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
ImageView imageView = viewWeakReference.get();
if (!isMySelf(imageView)) {
return;
}
if (!isMultiPictures) {
if (result) {
SyncSizeLocalWorker newTask = null;
if (IWeiciyuanDrawable != null) {
newTask = new SyncSizeLocalWorker(IWeiciyuanDrawable, getUrl(), method,
isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
IWeiciyuanDrawable.setImageDrawable(downloadedDrawable);
} else {
newTask = new SyncSizeLocalWorker(imageView, getUrl(), method, isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
imageView.setImageDrawable(downloadedDrawable);
}
newTask.executeOnIO();
} else {
SyncSizeReadWorker newTask = null;
if (IWeiciyuanDrawable != null) {
newTask = new SyncSizeReadWorker(IWeiciyuanDrawable, getUrl(), method,
isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
IWeiciyuanDrawable.setImageDrawable(downloadedDrawable);
} else {
newTask = new SyncSizeReadWorker(imageView, getUrl(), method, isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
imageView.setImageDrawable(downloadedDrawable);
}
newTask.executeOnWaitNetwork();
}
}else{
if (result) {
LocalWorker newTask = null;
if (IWeiciyuanDrawable != null) {
newTask = new LocalWorker(IWeiciyuanDrawable, getUrl(), method,
isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
IWeiciyuanDrawable.setImageDrawable(downloadedDrawable);
} else {
newTask = new LocalWorker(imageView, getUrl(), method, isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
imageView.setImageDrawable(downloadedDrawable);
}
newTask.executeOnIO();
} else {
ReadWorker newTask = null;
if (IWeiciyuanDrawable != null) {
newTask = new ReadWorker(IWeiciyuanDrawable, getUrl(), method,
isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
IWeiciyuanDrawable.setImageDrawable(downloadedDrawable);
} else {
newTask = new ReadWorker(imageView, getUrl(), method, isMultiPictures);
PictureBitmapDrawable downloadedDrawable = new PictureBitmapDrawable(newTask);
imageView.setImageDrawable(downloadedDrawable);
}
newTask.executeOnWaitNetwork();
}
}
}
}