package com.marshalchen.ua.common.usefulModule;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.marshalchen.ua.R;
/**
* A custom DownloadDialogShower to show download progress dialog easily
*/
public class DownloadDialogShower {
ProgressBar mProgress;
AlertDialog.Builder builder;
AlertDialog progressDialog;
TextView updatePercentTextView;
TextView updateCurrentTextView;
TextView updateTotalTextView;
boolean interceptFlag = false;
public static final int DOWN_UPDATE = 1;
public static final int DOWN_FINISH = 2;
public static final int DOWN_ERROR = 3;
Context mContext;
private DownloadDialogShower(Context mContext) {
this.mContext = mContext;
}
private void showDownloadDialog() {
builder = new AlertDialog.Builder(mContext);
final LayoutInflater inflater = LayoutInflater.from(mContext);
View v = inflater.inflate(R.layout.progress_update, null);
mProgress = (ProgressBar) v.findViewById(R.id.progress);
updatePercentTextView = (TextView) v.findViewById(R.id.updatePercentTextView);
updateCurrentTextView = (TextView) v.findViewById(R.id.updateCurrentTextView);
updateCurrentTextView.setText(prepareDownloadingTextViewString);
updateTotalTextView = (TextView) v.findViewById(R.id.updateTotalTextView);
// builder.setCustomTitle(inflater.inflate(R.layout.progress_update_title, null));
builder.setTitle(downloadTitle);
builder.setView(v);
builder.setNegativeButton(downloadCancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
interceptFlag = true;
}
});
progressDialog = builder.create();
progressDialog.show();
}
private String noticeTitle = "";
private String positiveButtonString = "";
private String negativeButtonString = "";
private String updateCurrentTextViewString = "";
private String prepareDownloadingTextViewString = "";
private String downloadTitle = "";
private String downloadFinshed = "";
private String downloadCancel = "";
private String errorTitle = "";
private String errorMessage = "";
private String errorButton = "";
private String currentDownload = "1/";
private String totalDownload = "0";
public int progress = 0;
public void showNoticeDialog(String alertInfo, final Thread thread) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(noticeTitle);
builder.setMessage(alertInfo);
builder.setPositiveButton(positiveButtonString, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
showDownloadDialog();
thread.start();
}
});
builder.setNegativeButton(negativeButtonString, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog noticeDialog = builder.create();
// noticeDialog.setContentView(v);
WindowManager.LayoutParams lp = noticeDialog.getWindow().getAttributes();
lp.height = 200;
noticeDialog.getWindow().setAttributes(lp);
noticeDialog.setCancelable(false);
noticeDialog.show();
}
public Handler processHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg); //To change body of overridden methods use File | Settings | File Templates.
switch (msg.what) {
case DOWN_UPDATE:
mProgress.setProgress(progress);
updatePercentTextView.setText(progress + "" + "%");
try {
updateCurrentTextView.setText(updateCurrentTextViewString
+ currentDownload);
updateTotalTextView.setText(totalDownload);
} catch (Exception e) {
e.printStackTrace();
}
break;
case DOWN_FINISH:
progressDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText(downloadFinshed);
break;
case DOWN_ERROR:
progressDialog.dismiss();
AlertDialog.Builder builderError = new AlertDialog.Builder(mContext);
builderError.setTitle(errorTitle);
builderError.setMessage(errorMessage);
builderError.setNegativeButton(errorButton, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderError.create().show();
break;
}
}
};
public String getNoticeTitle() {
return noticeTitle;
}
public void setNoticeTitle(String noticeTitle) {
this.noticeTitle = noticeTitle;
}
public String getPositiveButtonString() {
return positiveButtonString;
}
public void setPositiveButtonString(String positiveButtonString) {
this.positiveButtonString = positiveButtonString;
}
public String getNegativeButtonString() {
return negativeButtonString;
}
public void setNegativeButtonString(String negativeButtonString) {
this.negativeButtonString = negativeButtonString;
}
public String getUpdateCurrentTextViewString() {
return updateCurrentTextViewString;
}
public void setUpdateCurrentTextViewString(String updateCurrentTextViewString) {
this.updateCurrentTextViewString = updateCurrentTextViewString;
}
public String getPrepareDownloadingTextViewString() {
return prepareDownloadingTextViewString;
}
public void setPrepareDownloadingTextViewString(String prepareDownloadingTextViewString) {
this.prepareDownloadingTextViewString = prepareDownloadingTextViewString;
}
public String getDownloadTitle() {
return downloadTitle;
}
public void setDownloadTitle(String downloadTitle) {
this.downloadTitle = downloadTitle;
}
public String getDownloadFinshed() {
return downloadFinshed;
}
public void setDownloadFinshed(String downloadFinshed) {
this.downloadFinshed = downloadFinshed;
}
public String getDownloadCancel() {
return downloadCancel;
}
public void setDownloadCancel(String downloadCancel) {
this.downloadCancel = downloadCancel;
}
public String getErrorTitle() {
return errorTitle;
}
public void setErrorTitle(String errorTitle) {
this.errorTitle = errorTitle;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getErrorButton() {
return errorButton;
}
public void setErrorButton(String errorButton) {
this.errorButton = errorButton;
}
public String getCurrentDownload() {
return currentDownload;
}
public void setCurrentDownload(String currentDownload) {
this.currentDownload = currentDownload;
}
public String getTotalDownload() {
return totalDownload;
}
public void setTotalDownload(String totalDownload) {
this.totalDownload = totalDownload;
}
public static class Builder {
Context builderContext;
private DownloadDialogShower downloadDialogShower;
public Builder(Context context) {
initDefaults(context);
downloadDialogShower = new DownloadDialogShower(builderContext);
}
private void initDefaults(Context context) {
builderContext = context;
}
public Builder setNoticeTitle(String title) {
downloadDialogShower.setNoticeTitle(title);
return this;
}
public Builder setDownloadTitle(String title) {
downloadDialogShower.setDownloadTitle(title);
return this;
}
public Builder setErrorTitle(String title) {
downloadDialogShower.setErrorTitle(title);
return this;
}
public Builder setCurrentDownload(String title) {
downloadDialogShower.setCurrentDownload(title);
return this;
}
public Builder setDownloadCancel(String title) {
downloadDialogShower.setDownloadCancel(title);
return this;
}
public Builder setDownloadFinshed(String title) {
downloadDialogShower.setDownloadFinshed(title);
return this;
}
public Builder setErrorButton(String title) {
downloadDialogShower.setErrorButton(title);
return this;
}
public Builder setErrorMessage(String title) {
downloadDialogShower.setErrorMessage(title);
return this;
}
public Builder setNegativeButtonString(String title) {
downloadDialogShower.setNegativeButtonString(title);
return this;
}
public Builder setPositiveButtonString(String title) {
downloadDialogShower.setPositiveButtonString(title);
return this;
}
public Builder setPrepareDownloadingTextViewString(String title) {
downloadDialogShower.setPrepareDownloadingTextViewString(title);
return this;
}
public Builder setTotalDownload(String title) {
downloadDialogShower.setTotalDownload(title);
return this;
}
public Builder setUpdateCurrentTextViewString(String title) {
downloadDialogShower.setUpdateCurrentTextViewString(title);
return this;
}
public DownloadDialogShower build() {
return downloadDialogShower;
}
}
}