SettingFragment.java 7.37 KB
package com.huaheng.wms.fragment;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.huaheng.wms.LoginActivity;
import com.huaheng.wms.R;
import com.huaheng.wms.bean.ApkInfo;
import com.huaheng.wms.bean.CompanyInfo;
import com.huaheng.wms.bean.UserBean;
import com.huaheng.wms.download.DownloadUtils;
import com.huaheng.wms.https.HttpInterface;
import com.huaheng.wms.https.Subscribers.ProgressSubscriber;
import com.huaheng.wms.https.Subscribers.SubscriberOnNextListener;
import com.huaheng.wms.util.Constant;
import com.huaheng.wms.util.SpeechUtil;
import com.huaheng.wms.view.MenuLayout;
import com.huaheng.wms.util.WMSUtils;
import com.huaheng.wms.work.login.WareHouseActivity;

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

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import rx.Subscriber;

public class SettingFragment extends BaseFragment {

    @BindView(R.id.exitLayout)
    MenuLayout exitLayout;
    @BindView(R.id.upgradeLayout)
    MenuLayout upgradeLayout;
    Unbinder unbinder;
    @BindView(R.id.warehouseLayout)
    MenuLayout warehouseLayout;
    @BindView(R.id.companyLayout)
    MenuLayout companyLayout;
    @BindView(R.id.stationLayout)
    MenuLayout stationLayout;
    private List<CompanyInfo> mCompanyInfos;
    private String[] stationCodes;
    private int[] stationIds;
    private boolean isDownloading = false;

    @Override
    public View layout(LayoutInflater inflater) {
        View view = inflater.inflate(R.layout.fragment_settings, null);
        return view;
    }

    @Override
    public void releaseMemory() {

    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        isDownloading = false;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // TODO: inflate a fragment view
        View rootView = super.onCreateView(inflater, container, savedInstanceState);
        unbinder = ButterKnife.bind(this, rootView);
        upgradeLayout.setMenuTitle(getString(R.string.upgrade));
        upgradeLayout.setMenuContent(WMSUtils.getVersionName());
        exitLayout.setMenuTitle(getString(R.string.exit));
        exitLayout.setIconVisible(View.VISIBLE);
        warehouseLayout.setMenuTitle(getString(R.string.current_warehouse));
        warehouseLayout.setMenuContent(WMSUtils.getData(Constant.CURREN_WAREHOUSE));
        companyLayout.setMenuTitle(getString(R.string.current_company));
        companyLayout.setMenuContent(WMSUtils.getData(Constant.CURREN_COMPANY_NAME, Constant.DEFAULT_COMPANY_NAME));
        stationLayout.setMenuTitle(getString(R.string.current_station));
        stationLayout.setMenuContent(WMSUtils.getData(Constant.CURREN_STATION_CODE, Constant.DEFAULT_STATION_CODE));
        getCompanyInfo();
        return rootView;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @OnClick({R.id.exitLayout, R.id.upgradeLayout, R.id.companyLayout, R.id.stationLayout})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.exitLayout:
                getActivity().finish();
                WMSUtils.startActivity(getContext(), LoginActivity.class);
                break;
            case R.id.companyLayout:
                showListDialog();
                break;
            case R.id.upgradeLayout:
                if (!isDownloading) {
                    getUpdateApkInfo();
                    isDownloading = true;
                }
                break;
            case R.id.stationLayout:
                showSationDialog();
                break;
            default:
                break;
        }
    }

    private void showListDialog() {
        if (mCompanyInfos == null) {
            WMSUtils.showShort(getContext().getString(R.string.choose_current_company_error));
            return;
        }
        String[] companyNames = new String[mCompanyInfos.size()];
        for(int i =0; i< mCompanyInfos.size(); i++) {
            companyNames[i] = mCompanyInfos.get(i).getCompanyName();
        }
        AlertDialog.Builder listDialog =
                new AlertDialog.Builder(getContext());
        listDialog.setTitle(getContext().getString(R.string.enter_current_company));
        listDialog.setItems(companyNames, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String currentCompanyCode = mCompanyInfos.get(which).getCompanyCode();
                String currentCompanyName = mCompanyInfos.get(which).getCompanyName();
                int currentId = mCompanyInfos.get(which).getCompanyId();
                WMSUtils.saveData(Constant.CURREN_COMPANY_CODE, currentCompanyCode);
                WMSUtils.saveData(Constant.CURREN_COMPANY_NAME, currentCompanyName);
                WMSUtils.saveData(Constant.CURREN_COMPANY_ID, String.valueOf(currentId));
                companyLayout.setMenuContent(WMSUtils.getData(Constant.CURREN_COMPANY_NAME, Constant.DEFAULT_COMPANY_NAME));
            }
        });
        listDialog.show();
    }

    private void showSationDialog() {
        stationCodes = new String[]{"1号站台(内)", "2号站台(外)"};
        stationIds = new int[] {1, 2};
        AlertDialog.Builder listDialog =
                new AlertDialog.Builder(getContext());
        listDialog.setTitle("请选择出库站台");
        listDialog.setItems(stationCodes, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String currentStation = stationCodes[which];
                int stationId = stationIds[which];
                WMSUtils.saveData(Constant.CURREN_STATION_CODE, currentStation);
                WMSUtils.saveData(Constant.CURREN_STATION_ID, String.valueOf(stationId));
                stationLayout.setMenuContent(WMSUtils.getData(Constant.CURREN_STATION_CODE, Constant.DEFAULT_STATION_CODE));
            }
        });
        listDialog.show();
    }

    private void getCompanyInfo() {
        HttpInterface.getInsstance().getCompanyInfo(new Subscriber<ArrayList<CompanyInfo>>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(ArrayList <CompanyInfo> companyInfos) {
                mCompanyInfos = companyInfos;
            }
        });
    }

    private void getUpdateApkInfo() {
        HttpInterface.getInsstance().getUpdateApkInfo(new ProgressSubscriber<ApkInfo>(getContext(), apkInfoListener), WMSUtils.getPackageName(), String.valueOf(WMSUtils.getVersionCode()));
    }

    SubscriberOnNextListener apkInfoListener = new SubscriberOnNextListener<ApkInfo>() {

        @Override
        public void onNext(ApkInfo apkInfo) {
            String url = apkInfo.getUrl();
            String md5 = apkInfo.getMd5();
            int version  = apkInfo.getVersionCode();
            DownloadUtils.as(getContext()).download(url, md5, version);
        }

        @Override
        public void onError(String str) {

        }
    };
}