/*
 * ********************************************************************************************************************
 *
 *               iFHS7.
 *              ;BBMBMBMc                  rZMBMBR              BMB
 *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
 *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
 *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
 *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
 *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
 *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
 *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
 *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
 *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
 *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
 *         i0BM: SWKHKGO  MBDv
 *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
 *              ,  XMW  ..
 *                  r                                                                     All rights reserved.
 *
 * ********************************************************************************************************************
 */

package com.sybotan.android.base

import android.content.SharedPreferences
import org.jetbrains.anko.defaultSharedPreferences

/**
 * 保存应用系统设置
 *
 * @author  庞利祥(sybotan@126.com)
 */
open class SOptions {
    /** 共享存储对象 */
    private var pref: SharedPreferences = SApplication.app.defaultSharedPreferences

    /**
     * 获得Boolean类型的值
     *
     * @param   key         键
     * @param   default     默认值
     */
    fun getBoolean(key: String, default: Boolean): Boolean {
        return pref.getBoolean(key, default)
    } // Function getBoolean()

    /**
     * 设置Boolean类型的值
     *
     * @param   key         键
     * @param   value       值
     */
    fun putBoolean(key: String, value: Boolean) {
        pref.edit().putBoolean(key, value).apply()
        return
    } // Function putBoolean()

    /**
     * 获得Float类型的值
     *
     * @param   key         键
     * @param   default     默认值
     */
    fun getFloat(key: String, default: Float): Float {
        return pref.getFloat(key, default)
    } // Function getFloat()

    /**
     * 设置Float类型的值
     *
     * @param   key         键
     * @param   value       值
     */
    fun putFloat(key: String, value: Float) {
        pref.edit().putFloat(key, value).apply()
        return
    } // Function putFloat()

    /**
     * 获得Int类型的值
     *
     * @param   key         键
     * @param   default     默认值
     */
    fun getInt(key: String, default: Int): Int {
        return pref.getInt(key, default)
    } // Function getInt()

    /**
     * 设置Int类型的值
     *
     * @param   key         键
     * @param   value       值
     */
    fun putInt(key: String, value: Int) {
        pref.edit().putInt(key, value).apply()
        return
    } // Function putInt()

    /**
     * 获得Long类型的值
     *
     * @param   key         键
     * @param   default     默认值
     */
    fun getLong(key: String, default: Long): Long {
        return pref.getLong(key, default)
    } // Function getLong()

    /**
     * 设置Long类型的值
     *
     * @param   key         键
     * @param   value       值
     */
    fun putLong(key: String, value: Long) {
        pref.edit().putLong(key, value).apply()
        return
    } // Function putLong()

    /**
     * 获得String类型的值
     *
     * @param   key         键
     * @param   default     默认值
     */
    fun getString(key: String, default: String): String {
        return pref.getString(key, default)!!
    } // Function getString()

    /**
     * 设置String类型的值
     *
     * @param   key         键
     * @param   value       值
     */
    fun putString(key: String, value: String) {
        pref.edit().putString(key, value).apply()
        return
    } // Function putString()
} // Class SOptions