LotteryPreferences.kt 2.98 KB
Newer Older
楊慶堂's avatar
楊慶堂 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
package io.github.apollozhu.lottery.settings

import io.github.apollozhu.lottery.prize.LotteryPrizeModel
import io.github.apollozhu.lottery.settings.LotteryPreferences.forEachListener
import io.github.apollozhu.util.AZListenable
import java.awt.Color
import java.util.prefs.PreferenceChangeListener
import java.util.prefs.Preferences
import javax.swing.event.EventListenerList

object LotteryPreferences : AZListenable<PreferenceChangeListener> {
    private val preferences = Preferences.userNodeForPackage(javaClass)

    private val list = EventListenerList()
    override fun getListenerList() = list
    internal fun fireUpdate() = forEachListener { it.preferenceChange(null) }

    var title: String
        get() {
            val title = preferences.get("title", "")
            return if (title.isBlank()) "抽獎" else title
        }
        set(value) = preferences.put("title", value)

    var titleSize: Float
        get() = preferences.getFloat("titleSize", 80f)
        set(value) = preferences.putFloat("titleSize", value)

    var titleColor: Color
        get() = Color(preferences.getInt("titleColor", 0XFFFF00))
        set(value) = preferences.putInt("titleColor", value.rgb)

    var subtitle: String
        get() = preferences.get("subtitle", "")
        set(value) = preferences.put("subtitle", value)

    var subtitleSize: Float
        get() = preferences.getFloat("subtitleSize", 50f)
        set(value) = preferences.putFloat("subtitleSize", value)

    var subtitleColor: Color
        get() = Color(preferences.getInt("subtitleColor", 0))
        set(value) = preferences.putInt("subtitleColor", value.rgb)

    var backgroundMusicPath: String
        get() {
            val backgroundMusicPath = preferences.get("backgroundMusicPath", "")
            return if (backgroundMusicPath.isBlank()) "選擇背景音樂" else backgroundMusicPath
        }
        set(value) = preferences.put("backgroundMusicPath", value)

    var backgroundImagePath: String
        get() {
            val backgroundImagePath = preferences.get("backgroundImagePath", "")
            return if (backgroundImagePath.isBlank()) "選擇背景圖片" else backgroundImagePath
        }
        set(value) = preferences.put("backgroundImagePath", value)

    var backgroundColor: Color
        get() = Color(preferences.getInt("backgroundColor", 0xFF0000))
        set(value) = preferences.putInt("backgroundColor", value.rgb)

    var listPath: String
        get() {
            val listPath = preferences.get("listPath", "")
            return if (listPath.isBlank()) "選擇可中獎者名單" else listPath
        }
        set(value) = preferences.put("listPath", value)

    var winnerSize: Float
        get() = preferences.getFloat("winnerSize", 80f)
        set(value) = preferences.putFloat("winnerSize", value)

    var winnerColor: Color
        get() = Color(preferences.getInt("winnerColor", 0XFFFF00))
        set(value) = preferences.putInt("winnerColor", value.rgb)

    var prizes: Array<LotteryPrizeModel> = arrayOf()
}