SettingActivity.java 5.42 KB
package com.wmdigit.setting;


import android.view.View;

import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.RecyclerView;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.jiangdg.uvc.USBCameraHelper;
import com.wmdigit.camera.CameraxController;
import com.wmdigit.common.base.mvvm.BaseMvvmNaviDrawerActivity;
import com.wmdigit.common.constants.RouteConstant;
import com.wmdigit.common.model.DrawerMenuItemVO;
import com.wmdigit.data.mmkv.repository.CameraLocalRepository;
import com.wmdigit.data.mmkv.repository.CropLocalRepository;
import com.wmdigit.setting.databinding.ActivitySettingBinding;
import com.wmdigit.setting.viewmodel.SettingViewModel;

import java.util.List;

/**
 * 设置页
 * @author dizi
 */
@Route(path = RouteConstant.ROUTE_SETTING)
public class SettingActivity extends BaseMvvmNaviDrawerActivity<SettingViewModel, ActivitySettingBinding> {

    /**
     * fragment的导航id
     */
    private final int[] FRAGMENTS_NAVI_IDS = {
            R.id.systemInfoFragment,
            R.id.registerFragment,
            R.id.dataManagerFragment,
            R.id.dataLearningFragment,
            R.id.cameraCropFragment
    };
    /**
     * 标识是否需要释放相机
     */
    private boolean isCameraNeedRelease = false;

    @Override
    protected void initView() {

    }

    @Override
    protected void initData() {
        // 测试数据
//        List<ProductsDTO> list = new ArrayList<>();
//        list.add(new ProductsDTO("西红柿炒鸡蛋","000323", "XHSCJD", "12.80", 1));
//        list.add(new ProductsDTO("红烧茄子","000324", "HSQZ", "13.80", 1));
//        list.add(new ProductsDTO("套餐A","000325", "TCA", "10.80", 1));
//        list.add(new ProductsDTO("套餐B","000326", "TCB", "5.80", 1));
//        list.add(new ProductsDTO("套餐C","000327", "TCC", "3.80", 1));
//        list.add(new ProductsDTO("套餐D","000328", "TCD", "60.00", 1));
//        list.add(new ProductsDTO("套餐E","000329", "TCF", "20.10", 1));
//        ProductsRepository.getInstance().insertBatch(list);
//        List<ProductsPO> a = ProductsRepository.getInstance().queryAll();
    }

    @Override
    public void initObserve() {
        super.initObserve();
        // 观察页码位置
        mViewModel.pagePosition.observe(this, position -> {
            if (position == 3){
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
                // 关闭抽屉
                mDrawerLayout.close();
            }
            else{
                // 开启抽屉
                mDrawerLayout.open();
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        // 开相机
        if (!USBCameraHelper.getInstance(this).checkCameraOpened()){
            isCameraNeedRelease = true;
            USBCameraHelper.getInstance(this).open();
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        // 关相机
        if (isCameraNeedRelease){
            isCameraNeedRelease = false;
            USBCameraHelper.getInstance(this).destroy();
        }
    }

    @Override
    protected int getLayoutId() {
        return R.layout.activity_setting;
    }

    @Override
    protected Class<SettingViewModel> getViewModel() {
        return SettingViewModel.class;
    }

    @Override
    protected int getFragmentContainerViewId() {
        return R.id.nav_host_setting_fragment;
    }

    @Override
    protected Toolbar getToolbar() {
        return mDataBinding.toolbar;
    }

    @Override
    protected int getToolbarMenuResId() {
        return com.wmdigit.common.R.menu.toolbar_menu;
    }

    @Override
    protected List<DrawerMenuItemVO> getMenuData() {
        // 初始化导航菜单
        return mViewModel.getDrawerMenuItemModels();
    }

    @Override
    protected DrawerLayout getDrawerLayout() {
        return mDataBinding.drawerLayout;
    }

    @Override
    protected RecyclerView getDrawerMenu() {
        return mDataBinding.rvDrawerMenu;
    }

    @Override
    protected boolean allowCloseDrawer() {
        return mViewModel.checkAllowCloseDrawer();
    }

    @Override
    protected void onDrawerMenuItemClickListener(int position) {
        if (position == mViewModel.pagePosition.getValue()) {
            return;
        }
        if (FRAGMENTS_NAVI_IDS[position] == R.id.dataLearningFragment){
            // 检查是否裁剪
            if (!CropLocalRepository.getInstance().getHasCropped()){
                mViewModel.toastMessage.postValue(getString(R.string.module_setting_please_crop_first));
                return;
            }
        }
        // 选中抽屉菜单的指定项
        mViewModel.selectDrawerMenuItem(position);
        // 导航到对应页面
        navigation(FRAGMENTS_NAVI_IDS[position]);
    }


    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
    }

}