package com.demo.fish.app.main.model;

import android.databinding.Observable;
import android.databinding.ObservableList;

import com.demo.fish.app.main.entity.BannerEntity;
import com.demo.fish.app.main.entity.FunctionItemEntity;
import com.demo.fish.app.main.entity.HomeListEntity;
import com.demo.fish.core.mvvm.binding.IBinding;

import java.util.List;

/**
 * Created by Ben on 2017/4/9.
 */

public interface IHomeViewModel extends IBinding {
    /**
     * 页面刷新
     */
    void startRefresh(boolean notify);

    /**
     * 获取BannerList
     *
     * @return
     */
    List<BannerEntity> getBannerList();

    /**
     * 刷新数据
     */
    void refreshData();

    /**
     * 加载Banner
     */
    void loadBanner();

    /**
     * 为BannerList添加监听器
     *
     * @param callback
     */
    void addBannerListChangedCallback(ObservableList.OnListChangedCallback callback);

    /**
     * 监听HomeFragment的数据
     *
     * @param callback
     */
    void addHomeEntityChangedCallback(Observable.OnPropertyChangedCallback callback);

    /**
     * 处理Banner点击事件
     *
     * @param entity
     */
    void onBannerItemClick(BannerEntity entity);

    /**
     * 获取功能区域列表
     *
     * @return
     */
    List<FunctionItemEntity> getFunctionList();

    /**
     * 监听功能列表数据
     *
     * @param callback
     */
    void addFunctionListChangedCallback(ObservableList.OnListChangedCallback callback);

    /**
     * 处理功能区域点击事件
     *
     * @param entity
     */
    void onFunctionItemClick(FunctionItemEntity entity);

    /**
     * 获取首页列表
     *
     * @return
     */
    List<HomeListEntity> getHomeList();

    /**
     * 对首页列表数据监听
     *
     * @param callback
     */
    void addHomeListChangedCallback(ObservableList.OnListChangedCallback callback);

    /**
     * 刷新首页主列表数据
     */
    void loadHomeData();

    /**
     * 新鲜的和附近的列表切换
     *
     * @param position
     */
    void changeHomeData(int position);

    /**
     * 加载更多数据
     */
    void loadMore();
}