Newer
Older
dxcgt / app / src / main / java / com / smartdot / cgt / util / Msg.java
wangxitong on 6 Apr 2021 7 KB first commit
package com.smartdot.cgt.util;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.View;
import android.widget.Toast;

public class Msg {

    public static void showInfo(Context context, String text) {
        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
    }

    public static AlertDialog confirm(Context context, String msg, String title, MsgCallback callback) {
        return confirm(context, msg, title, callback, "确认", "取消");
    }

    public static AlertDialog confirm(Context context, String msg, String title, final MsgCallback callback, String ok,
            String cancel) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setMessage(msg);
        builder.setTitle(title);
        builder.setPositiveButton(ok, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (callback != null)
                    callback.callBack(true);
            }
        });
        builder.setNegativeButton(cancel, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (callback != null)
                    callback.callBack(false);
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
        return dialog;
    }

    public static AlertDialog showViewDialog(Context context, String title, View view, MsgCallback callback) {
        return showViewDialog(context, title, view, callback, "确定", "");
    }

    public static AlertDialog showViewDialog(Context context, String title, View view, final MsgCallback callback,
            String ok, String cancel) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setView(view);
        if (!StringUtils.isNullOrEmpty(ok)) {
            builder.setPositiveButton(ok, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (callback != null) {
                        callback.callBack(true);
                    }
                    dialog.dismiss();
                }
            });
        }
        if (!StringUtils.isNullOrEmpty(cancel)) {
            builder.setNegativeButton(cancel, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (callback != null) {
                        callback.callBack(false);
                    }
                    dialog.dismiss();
                }
            });
        }
        AlertDialog dialog = builder.create();
        dialog.show();
        return dialog;
    }

    public static ProgressDialog showProgressDialog(Context context, String message, String title) {
        ProgressDialog dialog = ProgressDialog.show(context, title, message);
        dialog.setCancelable(true);
        return dialog;
    }

    public static AlertDialog showChoiceDialog(Context context, String title, CharSequence[] items,
            boolean multiChoice, final MsgCallback callback) {
        return showChoiceDialog(context, title, items, multiChoice, callback, "确认", "取消");
    }

    public static AlertDialog showChoiceDialog(Context context, String title, final CharSequence[] items,
            boolean multiChoice, final MsgCallback callback, String ok, String cancel) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setNegativeButton(cancel, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (callback != null)
                    callback.callBack(false);
            }
        });
        if (multiChoice) {
            final ArrayList < Integer > selected = new ArrayList < Integer >();
            builder.setPositiveButton(ok, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    if (callback != null)
                        callback.callBack(true, (Object[]) items, (Integer[]) selected.toArray());
                }
            });
            builder.setMultiChoiceItems(items, null, new OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
                    if (!arg2 && selected.contains(arg1)) {
                        selected.remove(arg1);
                    } else if (arg2 && !selected.contains(arg1)) {
                        selected.add(arg1);
                    }
                }
            });
        } else {
            builder.setSingleChoiceItems(items, -1, new OnClickListener() {

                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    if (callback != null) {
                        callback.callBack(true, (Object[]) items, arg1);
                    }
                    arg0.dismiss();
                }
            });
        }
        AlertDialog dialog = builder.create();
        dialog.show();
        return dialog;
    }

    public static AlertDialog showChoiceDialog(Context context, String title, int itemsId, boolean multiChoice,
            final MsgCallback callback) {
        return showChoiceDialog(context, title, itemsId, multiChoice, callback, "确认", "取消");
    }

    public static AlertDialog showChoiceDialog(Context context, String title, int itemsId, boolean multiChoice,
            final MsgCallback callback, String ok, String cancel) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setNegativeButton(cancel, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (callback != null)
                    callback.callBack(false);
            }
        });
        if (multiChoice) {
            final ArrayList < Integer > selected = new ArrayList < Integer >();
            builder.setPositiveButton(ok, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    if (callback != null) {
                        AlertDialog nowDialog = (AlertDialog) dialog;

                        callback.callBack(true, nowDialog.getListView(), (Integer[]) selected.toArray());
                    }
                }
            });
            builder.setMultiChoiceItems(itemsId, null, new OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
                    if (!arg2 && selected.contains(arg1)) {
                        selected.remove(arg1);
                    } else if (arg2 && !selected.contains(arg1)) {
                        selected.add(arg1);
                    }
                }
            });
        } else {
            builder.setSingleChoiceItems(itemsId, -1, new OnClickListener() {

                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    AlertDialog dialog = (AlertDialog) arg0;
                    if (callback != null) {
                        callback.callBack(true, dialog.getListView(), arg1);
                    }
                    arg0.dismiss();
                }
            });
        }
        AlertDialog dialog = builder.create();
        dialog.show();
        return dialog;
    }

}