/*
* 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.fun.mapper.indicator;
import com.taobao.luaview.fun.mapper.LuaViewApi;
import com.taobao.luaview.fun.mapper.LuaViewLib;
import com.taobao.luaview.fun.mapper.ui.UIViewMethodMapper;
import com.taobao.luaview.global.VmVersion;
import com.taobao.luaview.userdata.indicator.UDCircleViewPagerIndicator;
import com.taobao.luaview.util.ColorUtil;
import com.taobao.luaview.util.DimenUtil;
import com.taobao.luaview.util.LuaUtil;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import java.util.List;
/**
* method mapper for PagerIndicator
*
* @param <U>
*/
@LuaViewLib(revisions = {"20170306已对标"})
public class UICircleViewPagerIndicatorMethodMapper<U extends UDCircleViewPagerIndicator> extends UIViewMethodMapper<U> {
private static final String TAG = "UICircleViewPagerIndicatorMethodMapper";
private static final String[] sMethods = new String[]{
"unselectedColor",//0
"selectedColor",//1
"fillColor",//2
"pageColor",//3
"strokeWidth",//4
"strokeColor",//5
"radius",//6
"snap",//7
"currentPage",//8
"currentItem"//9
};
@Override
public List<String> getAllFunctionNames() {
return mergeFunctionNames(TAG, super.getAllFunctionNames(), sMethods);
}
@Override
public Varargs invoke(int code, U target, Varargs varargs) {
final int opcode = code - super.getAllFunctionNames().size();
switch (opcode) {
case 0:
return unselectedColor(target, varargs);
case 1:
return selectedColor(target, varargs);
case 2:
return fillColor(target, varargs);
case 3:
return pageColor(target, varargs);
case 4:
return strokeWidth(target, varargs);
case 5:
return strokeColor(target, varargs);
case 6:
return radius(target, varargs);
case 7:
return snap(target, varargs);
case 8:
return currentPage(target, varargs);
case 9:
return currentItem(target, varargs);
}
return super.invoke(code, target, varargs);
}
//--------------------------------------- API --------------------------------------------------
/**
* 设置未选中颜色
*
* @param view
* @param varargs
* @return
*/
public LuaValue unselectedColor(U view, Varargs varargs) {
return pageColor(view, varargs);
}
public LuaValue setUnselectedColor(U view, Varargs varargs) {
return setPageColor(view, varargs);
}
public LuaValue getUnselectedColor(U view, Varargs varargs) {
return getPageColor(view, varargs);
}
/**
* 设置选中颜色
*
* @param view
* @param varargs
* @return
*/
@LuaViewApi(since = VmVersion.V_500)
public LuaValue selectedColor(U view, Varargs varargs) {
return fillColor(view, varargs);
}
@LuaViewApi(since = VmVersion.V_500)
public LuaValue setSelectedColor(U view, Varargs varargs) {
return setFillColor(view, varargs);
}
@LuaViewApi(since = VmVersion.V_500)
public LuaValue getSelectedColor(U view, Varargs varargs) {
return getFileColor(view, varargs);
}
/**
* 设置未选中颜色
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue fillColor(U view, Varargs varargs) {
if (varargs.narg() > 1) {//set
return setFillColor(view, varargs);
} else {
return getFileColor(view, varargs);
}
}
public LuaValue setFillColor(U view, Varargs varargs) {
final Integer color = ColorUtil.parse(LuaUtil.getInt(varargs, 2));
return view.setFillColor(color);
}
public LuaValue getFileColor(U view, Varargs varargs) {
return valueOf(ColorUtil.getHexColor(view.getFillColor()));
}
/**
* 设置颜色
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue pageColor(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setPageColor(view, varargs);
} else {
return getPageColor(view, varargs);
}
}
public LuaValue setPageColor(U view, Varargs varargs) {
final Integer color = ColorUtil.parse(LuaUtil.getInt(varargs, 2));
return view.setPageColor(color);
}
public LuaValue getPageColor(U view, Varargs varargs) {
return valueOf(ColorUtil.getHexColor(view.getPageColor()));
}
/**
* 设置线条宽度
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue strokeWidth(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setStrokeWidth(view, varargs);
} else {
return getStrokeWidth(view, varargs);
}
}
public LuaValue setStrokeWidth(U view, Varargs varargs) {
final int width = DimenUtil.dpiToPx(varargs.arg(2));
return view.setStrokeWidth(width);
}
public LuaValue getStrokeWidth(U view, Varargs varargs) {
return valueOf(DimenUtil.pxToDpi(view.getStrokeWidth()));
}
/**
* 设置线条颜色
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue strokeColor(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setStrokeColor(view, varargs);
} else {
return getStrokeColor(view, varargs);
}
}
public LuaValue setStrokeColor(U view, Varargs varargs) {
final Integer color = ColorUtil.parse(LuaUtil.getInt(varargs, 2));
return view.setStrokeColor(color);
}
public LuaValue getStrokeColor(U view, Varargs varargs) {
return valueOf(ColorUtil.getHexColor(view.getStrokeColor()));
}
/**
* 设置半径
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue radius(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setRadius(view, varargs);
} else {
return getRadius(view, varargs);
}
}
public LuaValue setRadius(U view, Varargs varargs) {
final int radius = DimenUtil.dpiToPx(varargs.arg(2));
return view.setRadius(radius);
}
public LuaValue getRadius(U view, Varargs varargs) {
return valueOf(DimenUtil.pxToDpi(view.getRadius()));
}
/**
* 设置是否移动瞬间过去
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue snap(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setSnap(view, varargs);
} else {
return isSnap(view, varargs);
}
}
public LuaValue setSnap(U view, Varargs varargs) {
final boolean snap = varargs.optboolean(2, false);
return view.setSnap(snap);
}
public LuaValue isSnap(U view, Varargs varargs) {
return valueOf(view.isSnap());
}
/**
* 设置当前第几页
*
* @param view
* @param varargs
* @return
*/
public LuaValue currentPage(U view, Varargs varargs) {
return currentItem(view, varargs);
}
public LuaValue setCurrentPage(U view, Varargs varargs) {
return setCurrentItem(view, varargs);
}
public LuaValue getCurrentPage(U view, Varargs varargs) {
return getCurrentItem(view, varargs);
}
/**
* 设置当前第几页
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue currentItem(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setCurrentItem(view, varargs);
} else {
return getCurrentItem(view, varargs);
}
}
public LuaValue setCurrentItem(U view, Varargs varargs) {
final int currentItem = varargs.optint(2, -1);
return view.setCurrentItem(currentItem);
}
public LuaValue getCurrentItem(U view, Varargs varargs) {
//TODO 这里需要获取currentItem,但是PageIndicator不支持
return view;
}
}