package com.cr.cruav

import android.app.Application
import android.content.Context
import com.squareup.otto.Bus
import com.squareup.otto.ThreadEnforcer
import me.jessyan.autosize.AutoSizeConfig

/**
 * 操作系统：MAC系统
 * 创建者：王成
 * 创建日期：3/1/23 9:58 AM
 * 描述：
 */
class CrApplication : Application() {

    /**
     * 创建上下文
     * @param base Context
     */
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base);
        com.secneo.sdk.Helper.install(this);
        app = this
    }

    /**
     * 创建
     */
    override fun onCreate() {
        super.onCreate()
        // todo: 2023/7/29 屏幕适配
        AutoSizeConfig.getInstance()?.let {
            // todo: 2023/7/31 宽度和高度 要根据是横屏界面还是竖屏界面进行设置
            // todo: 2023/7/31 横屏界面 则宽度设置为宽度 高度设置为高度
            // todo: 2023/7/31 否则 反向设置
            it.designWidthInDp = 891
            it.designHeightInDp = 411
            it.isExcludeFontScale = true
            it.isUseDeviceSize = false
            it.isCustomFragment = true
        }
        // todo: 2023/7/29 全局上下文
        context = applicationContext
    }

    /**
     *  静态方法
     */
    companion object {
        // define: 2023/4/3 订阅事件
        private var bus: Bus = Bus(ThreadEnforcer.ANY)
        // define: 2023/4/11 应用本身
        private var app: Application? = null
        // define: 2023/7/29 全局上下文
        private var context: Context? = null
        /**
         * 获取订阅事件
         * @return Bus
         */
        fun getEventBus(): Bus {
            return bus
        }

        /**
         * 获取Application
         * @return Application?
         */
        fun getInstance(): Application? {
            return app
        }
        /**
         * 获取上下文
         * @return Context? 上下文
         */
        fun getContext():Context{
            return context!!
        }

        /**
         * 设置上下文
         * @param context Context
         */
        fun setContext(context: Context){
            this.context = context
        }
    }

}