package org.qii.weiciyuan.support.asyncdrawable;
import org.qii.weiciyuan.support.file.FileLocationMethod;
import org.qii.weiciyuan.support.file.FileManager;
import org.qii.weiciyuan.support.imageutility.ImageUtility;
import android.graphics.drawable.ColorDrawable;
import android.widget.ImageView;
import java.lang.ref.WeakReference;
/**
* User: qii
* Date: 14-6-10
*/
public class LocalOrNetworkChooseWorker extends AbstractWorker<String, Integer, Boolean> {
private String data = "";
private boolean isMultiPictures = false;
private WeakReference<ImageView> viewWeakReference;
private FileLocationMethod method;
private IWeiciyuanDrawable IWeiciyuanDrawable;
public String getUrl() {
return data;
}
public LocalOrNetworkChooseWorker(ImageView view, String url, FileLocationMethod method,
boolean isMultiPictures) {
this.viewWeakReference = new WeakReference<ImageView>(view);
this.data = url;
this.method = method;
this.isMultiPictures = isMultiPictures;
}
public LocalOrNetworkChooseWorker(IWeiciyuanDrawable 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 (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();
}
}
}