package com.ch_linghu.fanfoudroid.task;
import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import com.ch_linghu.fanfoudroid.ui.base.WithHeaderActivity;
public abstract class TaskFeedback {
private static TaskFeedback _instance = null;
public static final int DIALOG_MODE = 0x01;
public static final int REFRESH_MODE = 0x02;
public static final int PROGRESS_MODE = 0x03;
public static TaskFeedback getInstance(int type, Context context) {
switch (type) {
case DIALOG_MODE:
_instance = DialogFeedback.getInstance();
break;
case REFRESH_MODE:
_instance = RefreshAnimationFeedback.getInstance();
break;
case PROGRESS_MODE:
_instance = ProgressBarFeedback.getInstance();
}
_instance.setContext(context);
return _instance;
}
protected Context _context;
protected void setContext(Context context) {
_context = context;
}
public Context getContent() {
return _context;
}
// default do nothing
public void start(String prompt) {
};
public void cancel() {
};
public void success(String prompt) {
};
public void success() {
success("");
};
public void failed(String prompt) {
};
public void showProgress(int progress) {
};
}
/**
*
*/
class DialogFeedback extends TaskFeedback {
private static DialogFeedback _instance = null;
public static DialogFeedback getInstance() {
if (_instance == null) {
_instance = new DialogFeedback();
}
return _instance;
}
private ProgressDialog _dialog = null;
@Override
public void cancel() {
if (_dialog != null) {
_dialog.dismiss();
}
}
@Override
public void failed(String prompt) {
if (_dialog != null) {
_dialog.dismiss();
}
Toast toast = Toast.makeText(_context, prompt, Toast.LENGTH_LONG);
toast.show();
}
@Override
public void start(String prompt) {
_dialog = ProgressDialog.show(_context, "", prompt, true);
_dialog.setCancelable(true);
}
@Override
public void success(String prompt) {
if (_dialog != null) {
_dialog.dismiss();
}
}
}
/**
*
*/
class RefreshAnimationFeedback extends TaskFeedback {
private static RefreshAnimationFeedback _instance = null;
public static RefreshAnimationFeedback getInstance() {
if (_instance == null) {
_instance = new RefreshAnimationFeedback();
}
return _instance;
}
private WithHeaderActivity _activity;
@Override
protected void setContext(Context context) {
super.setContext(context);
_activity = (WithHeaderActivity) context;
}
@Override
public void cancel() {
_activity.setRefreshAnimation(false);
}
@Override
public void failed(String prompt) {
_activity.setRefreshAnimation(false);
Toast toast = Toast.makeText(_context, prompt, Toast.LENGTH_LONG);
toast.show();
}
@Override
public void start(String prompt) {
_activity.setRefreshAnimation(true);
}
@Override
public void success(String prompt) {
_activity.setRefreshAnimation(false);
}
}
/**
*
*/
class ProgressBarFeedback extends TaskFeedback {
private static ProgressBarFeedback _instance = null;
public static ProgressBarFeedback getInstance() {
if (_instance == null) {
_instance = new ProgressBarFeedback();
}
return _instance;
}
private WithHeaderActivity _activity;
@Override
protected void setContext(Context context) {
super.setContext(context);
_activity = (WithHeaderActivity) context;
}
@Override
public void cancel() {
_activity.setProgress(0);
}
@Override
public void failed(String prompt) {
cancel();
Toast toast = Toast.makeText(_context, prompt, Toast.LENGTH_LONG);
toast.show();
}
@Override
public void start(String prompt) {
_activity.setProgress(10);
}
@Override
public void success(String prompt) {
Log.d("LDS", "ON SUCCESS");
_activity.setProgress(0);
}
@Override
public void showProgress(int progress) {
_activity.setProgress(progress);
}
// mProgress.setIndeterminate(true);
}