/*
* 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.ui;
import com.taobao.luaview.fun.mapper.LuaViewApi;
import com.taobao.luaview.fun.mapper.LuaViewLib;
import com.taobao.luaview.global.VmVersion;
import com.taobao.luaview.userdata.ui.UDViewPager;
import com.taobao.luaview.util.LuaUtil;
import com.taobao.luaview.view.viewpager.AutoScrollViewPager;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import java.util.List;
@LuaViewLib(revisions = {"20170306已对标"})
public class UIViewPagerMethodMapper<U extends UDViewPager> extends UIViewGroupMethodMapper<U> {
private static final String TAG = "UIViewPagerMethodMapper";
private static final String[] sMethods = new String[]{
"reload",//0
"indicator",//1
"currentPage",//2
"currentItem",//3
"autoScroll",//4
"looping",//5
"previewSide"//6
};
@Override
public List<String> getAllFunctionNames() {
return mergeFunctionNames(TAG, super.getAllFunctionNames(), sMethods);
}
@Override
public Varargs invoke(int code, U target, Varargs varargs) {
final int optcode = code - super.getAllFunctionNames().size();
switch (optcode) {
case 0:
return reload(target, varargs);
case 1:
return indicator(target, varargs);
case 2:
return currentPage(target, varargs);
case 3:
return currentItem(target, varargs);
case 4:
return autoScroll(target, varargs);
case 5:
return looping(target, varargs);
case 6:
return previewSide(target, varargs);
}
return super.invoke(code, target, varargs);
}
//--------------------------------------- API --------------------------------------------------
/**
* 支持左右透出预览
* @param view
* @param varargs
* @return
*/
@LuaViewApi(since = VmVersion.V_570)
public LuaValue previewSide(U view, Varargs varargs) {
Integer left = LuaUtil.getInt(varargs, 2);
Integer right = LuaUtil.getInt(varargs, 3);
return view.previewSide(left, right);
}
/**
* 重新更新数据
*
* @param view
* @param varargs
* @return
*/
public LuaValue reload(U view, Varargs varargs) {
return view.reload();
}
/**
* 指示器
*
* @param view
* @param varargs
* @return
*/
public LuaValue indicator(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setIndicator(view, varargs);
} else {
return getIndicator(view, varargs);
}
}
public LuaValue setIndicator(U view, Varargs varargs) {
final LuaValue indicator = varargs.arg(2);
return view.setViewPagerIndicator(indicator);
}
public LuaValue getIndicator(U view, Varargs varargs) {
return view.getViewPagerIndicator();
}
/**
* 设置第几页面
*
* @param view
* @param varargs
* @return
*/
public LuaValue currentPage(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setCurrentPage(view, varargs);
} else {
return getCurrentPage(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 = LuaUtil.toJavaInt(varargs.arg(2));
final boolean smoothScroll = varargs.optboolean(3, true);
return view.setCurrentItem(currentItem, smoothScroll);
}
public LuaValue getCurrentItem(U view, Varargs varargs) {
return LuaUtil.toLuaInt(view.getCurrentItem());
}
/**
* 自动滚动
*/
@LuaViewApi(since = VmVersion.V_501)
public LuaValue autoScroll(U view, Varargs varargs) {
Integer duration = LuaUtil.getInt(varargs, 2);
duration = duration != null ? duration * 1000 : AutoScrollViewPager.DEFAULT_INTERVAL;
final boolean reverseDirection = LuaUtil.getBoolean(varargs, false, 3);
return view.setAutoScroll(duration, reverseDirection);
}
/**
* 是否循环滚动
*
* @param view
* @param varargs
* @return
*/
@LuaViewApi(since = VmVersion.V_501)
public LuaValue looping(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setLooping(view, varargs);
} else {
return isLooping(view, varargs);
}
}
@LuaViewApi(since = VmVersion.V_501)
public LuaValue setLooping(U view, Varargs varargs) {
final boolean looping = LuaUtil.getBoolean(varargs, false, 2);
return view.setLooping(looping);
}
@LuaViewApi(since = VmVersion.V_501)
public LuaValue isLooping(U view, Varargs varargs) {
return valueOf(view.isLooping());
}
}