AbsPage.java 2.95 KB

/*
 * Copyright (c) People Technologies Co., Ltd. 2019-2022. All rights reserved.
 */

package com.wd.display.comp.layoutdata;

import java.util.ArrayList;
import java.util.List;

import androidx.fragment.app.Fragment;

import com.people.component.comp.parser.AbsSectionParser;

public abstract class AbsPage extends AbsLayout {

    private AbsSectionParser sectionParser;

    private ILayoutPresenter layoutPresenter;

    /**
     * 页面的楼层数据集合
     */
    private List<AbsGroup> groups;

    /**
     *  组件所在的楼层在groups中的索引值(记录的楼层可支持翻页)
     */
    private int currentGroupIndex = 0;

    private AbsGroup specialGroup;

    private Fragment mFragment;

    public AbsSectionParser getSectionParser() {
        return sectionParser;
    }

    public void setSectionParser(AbsSectionParser sectionParser) {
        this.sectionParser = sectionParser;
    }

    public int getGroupIndex() {
        return currentGroupIndex;
    }

    public void setGroupIndex(int groupIndex) {
        this.currentGroupIndex = groupIndex;
    }


    @Override
    public ILayoutPresenter getLayoutPresenter() {
        return layoutPresenter;
    }

    public void setLayoutPresenter(ILayoutPresenter layoutPresenter) {
        this.layoutPresenter = layoutPresenter;
    }

    /**
     * removeLayoutPresenter
     */
    public void removeLayoutPresenter() {
        this.layoutPresenter = null;
    }

    /**
     * getGroups
     *
     * @return AbsGroup
     */
    public List<AbsGroup> getGroups() {
        if (groups == null) {
            groups = new ArrayList<AbsGroup>();
        }
        return groups;
    }

    public void setGroups(List<AbsGroup> groups) {
        this.groups = groups;
    }

    /**
     * removeGroup
     *
     * @param index
     */
    public void removeGroup(int index) {
        groups.remove(index);
        getLayoutPresenter().onRefreshPageSuccess();
    }

    public Fragment getFragment() {
        return mFragment;
    }

    public void setFragment(Fragment fragment) {
        this.mFragment = fragment;
    }

    public AbsGroup getSpecialGroup() {
        return specialGroup;
    }

    public void setSpecialGroup(AbsGroup specialGroup) {
        this.specialGroup = specialGroup;
    }

    /**
     * 检测当前使用的楼层对象数据是在groups中最后位置(通过索引值对比)
     *
     * @return true:表示在最后的位置
     */
    public boolean checkGroupDataIsLastData() {

        int groupSize = groups.size();
        if (groupSize > 1) {
            // 索引值从0开始计算
            int temp = groupSize - 1;
            if (currentGroupIndex == temp) {
                return true;
            } else {
                return false;
            }
        } else {
            return true;
        }

    }


    /**
     * 设置新的楼层参数
     */
    public void setNewGroupParameter() {
        currentGroupIndex = currentGroupIndex + 1;
    }
}