/* * Created by LuaView. * Copyright (c) 2017, Alibaba Group. All rights reserved. * * This source code is licensed under the MIT. * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree. */ package com.taobao.luaview.userdata.ui; import android.content.DialogInterface; import com.taobao.luaview.userdata.base.BaseUserdata; import com.taobao.luaview.util.AlertUtil; import com.taobao.luaview.util.LuaUtil; import com.taobao.luaview.util.LuaViewUtil; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaFunction; import org.luaj.vm2.LuaValue; import org.luaj.vm2.Varargs; import java.util.ArrayList; import java.util.List; /** * Alert 数据封装 * @author song */ public class UDAlert extends BaseUserdata { //dialog属性 private CharSequence mTitle; private CharSequence mContent; private List<CharSequence> mButtonTexts; private List<LuaFunction> mButtonCallbacks; public UDAlert(Globals globals, LuaValue metaTable, Varargs varargs) { super(globals, metaTable, varargs); init(); } /** * 初始化数据 */ private void init() { mTitle = LuaViewUtil.getText(getInitParam1()); mContent = LuaViewUtil.getText(getInitParam2()); mButtonTexts = new ArrayList<CharSequence>(); mButtonCallbacks = new ArrayList<LuaFunction>(); for (int i = 3; i <= getInitParamsCount(); i++) { if (this.initParams.isfunction(i)) { mButtonCallbacks.add(this.initParams.optfunction(i, null)); } else { mButtonTexts.add(LuaViewUtil.getText(this.initParams.optvalue(i, NIL))); } } showDialog(); } /** * 创建dialog */ private void showDialog() { int buttonCount = Math.max(mButtonTexts.size(), mButtonCallbacks.size()); switch (buttonCount) { case 0: case 1: showOneButtonDialog(); break; case 2: showTwoButtonDialog(); break; } } /** * 创建一个按钮的对话框 */ private void showOneButtonDialog() { final CharSequence ok = mButtonTexts.size() > 0 ? mButtonTexts.get(0) : null; AlertUtil.showAlert(getContext(), mTitle, mContent, ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (mButtonCallbacks.size() > 0) { LuaUtil.callFunction(mButtonCallbacks.get(0)); } } }); } /** * 创建两个按钮的对话框 */ private void showTwoButtonDialog() { final CharSequence ok = mButtonTexts.size() > 0 ? mButtonTexts.get(0) : null; final CharSequence cancel = mButtonTexts.size() > 1 ? mButtonTexts.get(1) : null; AlertUtil.showAlert(getContext(), mTitle, mContent, ok, cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (mButtonCallbacks.size() > 0) { LuaUtil.callFunction(mButtonCallbacks.get(0)); } } }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (mButtonCallbacks.size() > 1) { LuaUtil.callFunction(mButtonCallbacks.get(1)); } } }); } }