package net.coding.program.common.ui;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.PopupWindow;
import com.loopj.android.http.RequestParams;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import net.coding.program.FootUpdate;
import net.coding.program.R;
import net.coding.program.common.DialogUtil;
import net.coding.program.common.Global;
import net.coding.program.common.GlobalSetting;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.common.StartActivity;
import net.coding.program.common.UnreadNotify;
import net.coding.program.common.network.NetworkCallback;
import net.coding.program.common.network.NetworkImpl;
import net.coding.program.common.umeng.UmengActivity;
import net.coding.program.common.util.SingleToast;
import net.coding.program.model.RequestData;
import net.coding.program.user.UserDetailActivity_;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Created by cc191954 on 14-8-16.
* 封装了图片下载并缓存
*/
public class BaseActivity extends UmengActivity implements NetworkCallback, StartActivity {
protected LayoutInflater mInflater;
protected FootUpdate mFootUpdate = new FootUpdate();
protected View.OnClickListener mOnClickUser = new View.OnClickListener() {
@Override
public void onClick(View v) {
String globalKey = (String) v.getTag();
UserDetailActivity_.intent(BaseActivity.this)
.globalKey(globalKey)
.start();
}
};
SingleToast mSingleToast;
private ImageLoadTool imageLoadTool = new ImageLoadTool();
private ProgressDialog mProgressDialog;
private NetworkImpl networkImpl;
/**
* 载入动画
*/
private DialogUtil.LoadingPopupWindow mDialogProgressPopWindow = null;
protected void showProgressBar(boolean show) {
showProgressBar(show, "");
}
public void showProgressBar(boolean show, String message) {
if (show) {
mProgressDialog.setMessage(message);
mProgressDialog.show();
} else {
mProgressDialog.hide();
}
}
protected void showProgressBar(boolean show, int message) {
String s = getString(message);
showProgressBar(show, s);
}
protected void showProgressBar(int messageId) {
String message = getString(messageId);
showProgressBar(true, message);
}
public void showErrorMsg(int code, JSONObject json) {
if (code == NetworkImpl.NETWORK_ERROR) {
showButtomToast(R.string.connect_service_fail);
} else {
String msg = Global.getErrorMsg(json);
if (!msg.isEmpty()) {
showButtomToast(msg);
}
}
}
protected void setActionBarTitle(String title) {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setTitle(title);
}
}
protected void setActionBarTitle(int title) {
String titleString = getString(title);
setActionBarTitle(titleString);
}
public void showErrorMsgMiddle(int code, JSONObject json) {
if (code == NetworkImpl.NETWORK_ERROR) {
showMiddleToast(R.string.connect_service_fail);
} else {
String msg = Global.getErrorMsg(json);
if (!msg.isEmpty()) {
showMiddleToast(msg);
}
}
}
public ImageLoadTool getImageLoad() {
return imageLoadTool;
}
protected boolean isLoadingFirstPage(String tag) {
return networkImpl.isLoadingFirstPage(tag);
}
protected boolean isLoadingLastPage(String tag) {
return networkImpl.isLoadingLastPage(tag);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSingleToast = new SingleToast(this);
networkImpl = new NetworkImpl(this, this);
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setIndeterminate(true);
mProgressDialog.setCancelable(false);
mInflater = getLayoutInflater();
initSetting();
UnreadNotify.update(this);
}
@Override
protected void onDestroy() {
if (mProgressDialog != null) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
GlobalSetting.getInstance().removeMessageNoNotify();
super.onDestroy();
}
protected void initSetting() {
networkImpl.initSetting();
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
}
protected void getNextPageNetwork(String url, final String tag) {
networkImpl.getNextPageNetwork(url, tag);
}
protected void postNetwork(RequestData request, String tag) {
postNetwork(request.url, request.params, tag);
}
protected void postNetwork(RequestData request, String tag, Object data) {
postNetwork(request.url, request.params, tag, -1, data);
}
protected void postNetwork(String url, String tag) {
postNetwork(url, new RequestParams(), tag);
}
protected void postNetwork(String url, RequestParams params, final String tag) {
networkImpl.loadData(url, params, tag, -1, null, NetworkImpl.Request.Post);
}
protected void postNetwork(String url, RequestParams params, final String tag, int dataPos, Object data) {
networkImpl.loadData(url, params, tag, dataPos, data, NetworkImpl.Request.Post);
}
@Override
public void getNetwork(String url, final String tag) {
networkImpl.loadData(url, null, tag, -1, null, NetworkImpl.Request.Get);
}
protected void getNetwork(String url, final String tag, int dataPos, Object data) {
networkImpl.loadData(url, null, tag, dataPos, data, NetworkImpl.Request.Get);
}
protected void putNetwork(String url, RequestParams params, final String tag) {
networkImpl.loadData(url, params, tag, -1, null, NetworkImpl.Request.Put);
}
protected void putNetwork(String url, RequestParams params, String tag, int pos, Object object) {
networkImpl.loadData(url, params, tag, pos, object, NetworkImpl.Request.Put);
}
protected void putNetwork(String url, final String tag, int dataPos, Object data) {
networkImpl.loadData(url, null, tag, dataPos, data, NetworkImpl.Request.Put);
}
protected void deleteNetwork(String url, final String tag) {
networkImpl.loadData(url, null, tag, -1, null, NetworkImpl.Request.Delete);
}
protected void deleteNetwork(String url, RequestParams params, final String tag) {
networkImpl.loadData(url, params, tag, -1, null, NetworkImpl.Request.Delete);
}
protected void deleteNetwork(String url, final String tag, Object id) {
networkImpl.loadData(url, null, tag, -1, id, NetworkImpl.Request.Delete);
}
protected void deleteNetwork(String url, final String tag, int dataPos, Object id) {
networkImpl.loadData(url, null, tag, dataPos, id, NetworkImpl.Request.Delete);
}
protected void showDialog(String title, String msg, DialogInterface.OnClickListener clickOk) {
showDialog(title, msg, clickOk, null);
}
// protected void showListDialog() {
// AlertDialog.Builder builder = new AlertDialog.Builder(this);
// AlertDialog dialog = builder.setItems()
// }
protected void showDialog(String title, String msg, DialogInterface.OnClickListener clickOk,
DialogInterface.OnClickListener clickCancel) {
showDialog(title, msg, clickOk, clickCancel, "确定", "取消");
}
protected void showDialog(String title, String msg, DialogInterface.OnClickListener clickOk,
DialogInterface.OnClickListener clickCancel,
String okButton,
String cancelButton) {
showDialog(title, msg, clickOk, clickCancel, null, okButton, cancelButton, "");
}
protected void showDialog(String title, String msg, DialogInterface.OnClickListener clickOk,
DialogInterface.OnClickListener clickCancel,
DialogInterface.OnClickListener clickNeutral,
String okButton,
String cancelButton,
String neutralButton) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(title)
.setMessage(msg);
if (okButton != null) {
builder.setPositiveButton(okButton, clickOk);
}
if (cancelButton != null) {
builder.setNegativeButton(cancelButton, clickCancel);
}
if (clickNeutral != null && !neutralButton.isEmpty()) {
builder.setNeutralButton(neutralButton, clickNeutral);
}
AlertDialog dialog = builder.show();
}
public void showButtomToast(String msg) {
mSingleToast.showButtomToast(msg);
}
public void showMiddleToast(int id) {
mSingleToast.showMiddleToast(id);
}
public void showMiddleToast(String msg) {
mSingleToast.showMiddleToast(msg);
}
public void showMiddleToastLong(String msg) {
mSingleToast.showMiddleToastLong(msg);
}
public void showButtomToast(int messageId) {
mSingleToast.showButtomToast(messageId);
}
protected void iconfromNetwork(ImageView view, String url) {
imageLoadTool.loadImage(view, Global.makeSmallUrl(view, url));
}
protected void iconfromNetwork(ImageView view, String url, SimpleImageLoadingListener animate) {
imageLoadTool.loadImage(view, Global.makeSmallUrl(view, url), animate);
}
protected void imagefromNetwork(ImageView view, String url) {
imageLoadTool.loadImageFromUrl(view, url);
}
protected void imagefromNetwork(ImageView view, String url, DisplayImageOptions options) {
imageLoadTool.loadImageFromUrl(view, url, options);
}
public void initDialogLoading() {
if (mDialogProgressPopWindow == null) {
PopupWindow.OnDismissListener onDismissListener = new PopupWindow.OnDismissListener() {
public void onDismiss() {
hideProgressDialog();
}
};
mDialogProgressPopWindow = DialogUtil.initProgressDialog(this, onDismissListener);
}
}
public void showDialogLoading(String title) {
initDialogLoading();
DialogUtil.showProgressDialog(this, mDialogProgressPopWindow, title);
}
public void showDialogLoading() {
showDialogLoading("");
}
public void hideProgressDialog() {
if (mDialogProgressPopWindow != null) {
DialogUtil.hideDialog(mDialogProgressPopWindow);
}
}
}