package net.osmand.plus.dialogs; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import net.osmand.plus.ProgressImplementation; /** * Created by GaidamakUA on 12/7/15. */ public class ProgressDialogFragment extends DialogFragment { public static final String TAG = "progress"; private static final String TITLE_ID = "title_id"; private static final String MESSAGE_ID = "message_id"; private static final String STYLE = "style"; private int mMax; private int accumulatedDelta; private DialogInterface.OnDismissListener onDismissListener; @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Bundle args = getArguments(); int titleId = args.getInt(TITLE_ID); int messageId = args.getInt(MESSAGE_ID); int style = args.getInt(STYLE); final ProgressDialog dialog = ProgressImplementation.createProgressDialog(getActivity(), getString(titleId), getString(messageId), style).getDialog(); dialog.setIndeterminate(false); dialog.setMax(mMax); dialog.setProgress(0); return dialog; } public void setMax(final int max) { mMax = max; if (getDialog() != null) { getProgressDialog().setMax(mMax); } } public void incrementProgressBy(int delta) { if (getDialog() == null) { accumulatedDelta += delta; } else { getProgressDialog().incrementProgressBy(delta + accumulatedDelta); } } private ProgressDialog getProgressDialog() { return (ProgressDialog) getDialog(); } @Override public void onDismiss(DialogInterface dialog) { if (onDismissListener != null) { onDismissListener.onDismiss(dialog); } } public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) { this.onDismissListener = onDismissListener; } public static ProgressDialogFragment createInstance(int titleId, int messageId, int style) { ProgressDialogFragment fragment = new ProgressDialogFragment(); Bundle args = new Bundle(); args.putInt(TITLE_ID, titleId); args.putInt(MESSAGE_ID, messageId); args.putInt(STYLE, style); fragment.setArguments(args); return fragment; } }