MainPresenter.java 6.09 KB
/*
 * Copyright (c) 2016 wugian
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.xgimi.gimicinema.presenter;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.Log;
import com.gimi.common.cinema.model.ClassificationItem;
import com.gimi.common.cinema.model.LocalMovieMessage;
import com.gimi.common.cinema.utils.LocalDataUtils;
import com.gimi.common.cinema.utils.SambaFileCharge;
import com.gimi.common.cinema.utils.Utils;
import com.xgimi.gimicinema.BuildConfig;
import com.xgimi.gimicinema.model.AdsModelImpl;
import com.xgimi.gimicinema.model.IAdsModel;
import com.xgimi.gimicinema.model.IMainModel;
import com.xgimi.gimicinema.model.IOtherModel;
import com.xgimi.gimicinema.model.ISambaModel;
import com.xgimi.gimicinema.model.IUpdateModel;
import com.xgimi.gimicinema.model.MainModelImpl;
import com.xgimi.gimicinema.model.OtherModelImpl;
import com.xgimi.gimicinema.model.SambaModelImpl;
import com.xgimi.gimicinema.model.UpdateModelImpl;
import com.xgimi.gimicinema.mview.IMainView;

import java.util.List;

/**
 * Created by wugian on 2016/9/23
 */
public class MainPresenter extends BasePresenter
        implements MainModelImpl.OnGetCtrlListener,
        SambaModelImpl.OnSambaMountListener,
        MainModelImpl.OnMainRecommendListener,
        MainModelImpl.OnClassificationListener,
        AdsModelImpl.OnGetAdsPathListener,
        OtherModelImpl.OnUpdateClazzListener {

    private Context context;

    private IMainView mainView;
    private ISambaModel sambaModel;
    private IMainModel mainModel;
    private IUpdateModel updateModel;
    private IAdsModel adsModel;
    private IOtherModel otherModel;

    public MainPresenter(IMainView mainView) {
        this.mainView = mainView;
        sambaModel = new SambaModelImpl();
        mainModel = new MainModelImpl();
        updateModel = new UpdateModelImpl();
        adsModel = new AdsModelImpl();
        otherModel = new OtherModelImpl();
    }

    public void load(final Context context) {
        this.context = context;
        mountSamba(context);
        loadRecommend(context);
        loadClassification(context);
        updateAppVersion(context);
        updateDb(context);
    }

    public void mountSamba(Context context) {
        if (!BuildConfig.MACHINE_TYPE.equals("himedia")) {
            Log.d("lovely", "╟  main presenter if");
            sambaModel.mountSamba(context, this);
        }
    }

    public void loadRecommend(Context context) {
        mainModel.loadRecommend(context, this);
    }

    public void loadClassification(Context context) {
        mainModel.loadClassification(context, this);
    }

    public void updatePoster(Context context) {
        updateModel.updatePoster(context);
    }

    public void updateVideoInfo(Context context) {
        updateModel.updateVideoAdsInfo(context);
    }

    public void updateAppVersion(Context context) {
        updateModel.updateAppVersion(context, false);
    }

    public void getVideoAdsPath(Context context) {
        adsModel.getVideoAds(context, this);
    }

    public void updateClazz(Context context) {
        SharedPreferences sp = Utils.getSp(context);
        otherModel.updateClazz(sp, this);
    }

    public void updateDb(Context context) {
        new LocalDataUtils(context).updateDb();
    }

    @Override
    public void onGetControlImageSuccess(Bitmap bitmap) {
        mainView.loadCtrlImg(bitmap);
    }

    @Override
    public void onGetControlImageFailure(Exception e) {
        Log.e("lovely", "╟  " + e.getMessage());
    }

    @Override
    public void onSambaMountSuccess() {
        Log.d("lovely", "╟  onSambaMountSuccess ");
    }

    @Override
    public void onSambaMountFailure(int code, String wrongMsg) {
        Log.e("lovely", "╟  " + code + "," + wrongMsg);
        mainView.showMountFailure(wrongMsg);
    }

    @Override
    public void onMainSuccess(List<LocalMovieMessage> list) {
        mainView.loadRecommendMovie(list);
    }

    @Override
    public void onMainFailure() {
        Log.e("lovely", "╟  onMainFailure ");
    }

    @Override
    public void onClazzSuccess(List<ClassificationItem> list) {
        mainView.loadClazz(list);
    }

    @Override
    public void onClazzFailure() {
        Log.e("lovely", "╟  onClazzFailure ");
    }


    public void openClazz(int position) {
        int size = mainView.getClazzData().size();
        if (position < size) {
            mainView.openClazz(mainView.getClazzData().get(position));
        } else {
            mainView.openPlayList();
        }
    }

    public void checkAuth() {
    }

    @Override
    public void onSuccess(String path) {
    }

    @Override
    public void onFailure() {

    }


    @Override
    public void onUpdateClazzSuccess() {
        loadClassification(context);
    }

    public void jumpToDetail(LocalMovieMessage msg) {
        if (BuildConfig.BUILD_TYPE.equals("himedia")) {
            if (!SambaFileCharge.fileExist(com.xgimi.gimicinema.activity.CinemaConfig.BASIC_ROOT)) {
                mountSamba(context);
            }
        }
        if (SambaFileCharge.fileExist(msg.getPlayPath())) {
            mainView.jumpToDetail(msg);
        } else {
            if (!TextUtils.isEmpty(msg.getMd5())
                    && msg.getMd5().equals("qnyb_abc_test")) {
                mainView.jumpTo1905Detail(msg);
            } else {
                mainView.showMsg("电影被移除");
            }
        }
    }

    public void jumpToSearch() {
        mainView.jumpToSearch();
    }

    public void umountSamba() {
        sambaModel.umountSamba();
    }
}