2018-08-11 07:47:10 +02:00
|
|
|
<template>
|
2023-06-04 18:25:47 +02:00
|
|
|
<a :class="{ 'is-info': !is_repeat_off }" @click="toggle_repeat_mode">
|
2023-06-30 21:41:40 +02:00
|
|
|
<mdicon
|
|
|
|
class="icon"
|
|
|
|
:name="icon_name"
|
|
|
|
:size="icon_size"
|
2024-03-26 03:34:50 +01:00
|
|
|
:title="$t(`player.button.${icon_name}`)"
|
2023-06-30 21:41:40 +02:00
|
|
|
/>
|
2018-08-11 07:47:10 +02:00
|
|
|
</a>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import webapi from '@/webapi'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'PlayerButtonRepeat',
|
2020-04-18 06:57:55 +02:00
|
|
|
props: {
|
2024-02-28 15:25:36 +01:00
|
|
|
icon_size: { default: 16, type: Number }
|
2018-08-11 07:47:10 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
computed: {
|
2022-04-16 10:14:03 +02:00
|
|
|
icon_name() {
|
|
|
|
if (this.is_repeat_all) {
|
|
|
|
return 'repeat'
|
|
|
|
} else if (this.is_repeat_single) {
|
|
|
|
return 'repeat-once'
|
|
|
|
}
|
|
|
|
return 'repeat-off'
|
2024-03-26 15:00:17 +01:00
|
|
|
},
|
|
|
|
is_repeat_all() {
|
|
|
|
return this.$store.state.player.repeat === 'all'
|
|
|
|
},
|
|
|
|
is_repeat_off() {
|
|
|
|
return !this.is_repeat_all && !this.is_repeat_single
|
|
|
|
},
|
|
|
|
is_repeat_single() {
|
|
|
|
return this.$store.state.player.repeat === 'single'
|
2018-08-11 07:47:10 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
2023-06-07 21:25:54 +02:00
|
|
|
toggle_repeat_mode() {
|
2018-08-11 07:47:10 +02:00
|
|
|
if (this.is_repeat_all) {
|
|
|
|
webapi.player_repeat('single')
|
|
|
|
} else if (this.is_repeat_single) {
|
|
|
|
webapi.player_repeat('off')
|
|
|
|
} else {
|
|
|
|
webapi.player_repeat('all')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
2022-02-19 06:39:14 +01:00
|
|
|
<style></style>
|