import { defineComponent } from 'vue'
import { Radio, RadioGroup, Checkbox, CheckboxGroup } from 'vant'
import { useSettingModule } from '@/modules'
import { BasicEffect, SettingMutations } from '@/interface'
export default defineComponent({
name: 'SettingEffect',
setup() {
const { useState, useMutations } = useSettingModule()
const state = useState()
const basicFormat: {
[k: string]: string
} = {
[BasicEffect.D3]: '3D环绕',
[BasicEffect.FADE]: '淡入淡出',
[BasicEffect.TENDER]: '温柔'
}
const handleChangeBasic = (basic: BasicEffect[]) => {
useMutations(SettingMutations.SET_BASIC_EFFECT, basic)
}
const handleChangeConvolver = (convolver: string) => {
useMutations(SettingMutations.SET_CONVOLVER_EFFECT, convolver)
}
return () => (
<div class="setting-view-contanier--effect" data-location="effect">
<h2>音效设置</h2>
<div class="setting-view-description">
使用不同的音效会有不一样的听歌体验,比如淡入淡出可以使听歌时不那么的突兀、3D环绕可以有一种立体的感觉。
</div>
<div class="effect-basic">
<div>基本音效</div>
<CheckboxGroup
direction="horizontal"
v-model={state.basicEffect}
onChange={handleChangeBasic}
>
{Object.keys(basicFormat).map(key => {
return (
<Checkbox
shape="square"
checked-color="var(--base-color)"
icon-size="16px"
name={key}
>
{basicFormat[key]}
</Checkbox>
)
})}
</CheckboxGroup>
</div>
<div class="effect-convolver">
<div>混合音效</div>
<RadioGroup
direction="horizontal"
v-model={state.convolver}
onChange={handleChangeConvolver}
>
{state.convolverAll.map(mixing => (
<Radio
name={mixing}
shape="square"
checked-color="var(--base-color)"
icon-size="16px"
>
{mixing}
</Radio>
))}
</RadioGroup>
</div>
</div>
)
}
})