mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-21 10:51:30 +00:00
feat: implement smart speed UI and state persistence
This commit is contained in:
parent
4299fdce59
commit
fa2460868e
7 changed files with 150 additions and 2 deletions
|
|
@ -17,6 +17,18 @@
|
|||
<div class="flex items-center mb-4">
|
||||
<ui-select-input v-model="playbackRateIncrementDecrement" :label="$strings.LabelPlaybackRateIncrementDecrement" menuMaxHeight="250px" :items="playbackRateIncrementDecrementValues" @input="setPlaybackRateIncrementDecrementAmount" />
|
||||
</div>
|
||||
|
||||
<div v-if="!isCasting" class="w-full h-px bg-white/10 my-6"></div>
|
||||
|
||||
<div v-if="!isCasting" class="flex items-center mb-4">
|
||||
<ui-toggle-switch v-model="enableSmartSpeed" @input="setEnableSmartSpeed" />
|
||||
<div class="pl-4">
|
||||
<span>{{ $strings.LabelEnableSmartSpeed || 'Enable Smart Speed' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!isCasting" class="flex items-center mb-4" :class="{'opacity-50 pointer-events-none': !enableSmartSpeed}">
|
||||
<ui-select-input v-model="smartSpeedRatio" :label="$strings.LabelSmartSpeedRatio || 'Smart Speed Compression Ratio'" menuMaxHeight="250px" :items="smartSpeedRatioValues" @input="setSmartSpeedRatio" />
|
||||
</div>
|
||||
</div>
|
||||
</modals-modal>
|
||||
</template>
|
||||
|
|
@ -40,7 +52,17 @@ export default {
|
|||
jumpForwardAmount: 10,
|
||||
jumpBackwardAmount: 10,
|
||||
playbackRateIncrementDecrementValues: [0.1, 0.05],
|
||||
playbackRateIncrementDecrement: 0.1
|
||||
playbackRateIncrementDecrement: 0.1,
|
||||
enableSmartSpeed: false,
|
||||
smartSpeedRatio: 2.5,
|
||||
smartSpeedRatioValues: [
|
||||
{ text: '1.5x', value: 1.5 },
|
||||
{ text: '2.0x', value: 2.0 },
|
||||
{ text: '2.5x', value: 2.5 },
|
||||
{ text: '3.0x', value: 3.0 },
|
||||
{ text: '4.0x', value: 4.0 },
|
||||
{ text: '5.0x', value: 5.0 }
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
@ -51,6 +73,9 @@ export default {
|
|||
set(val) {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
},
|
||||
isCasting() {
|
||||
return this.$store.state.globals.isCasting || false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -69,11 +94,24 @@ export default {
|
|||
this.playbackRateIncrementDecrement = val
|
||||
this.$store.dispatch('user/updateUserSettings', { playbackRateIncrementDecrement: val })
|
||||
},
|
||||
setEnableSmartSpeed() {
|
||||
this.$store.commit('user/SET_SMART_SPEED_ENABLED', this.enableSmartSpeed)
|
||||
},
|
||||
setSmartSpeedRatio(val) {
|
||||
this.smartSpeedRatio = val
|
||||
this.$store.commit('user/SET_SMART_SPEED_RATIO', val)
|
||||
},
|
||||
settingsUpdated() {
|
||||
this.useChapterTrack = this.$store.getters['user/getUserSetting']('useChapterTrack')
|
||||
this.jumpForwardAmount = this.$store.getters['user/getUserSetting']('jumpForwardAmount')
|
||||
this.jumpBackwardAmount = this.$store.getters['user/getUserSetting']('jumpBackwardAmount')
|
||||
this.playbackRateIncrementDecrement = this.$store.getters['user/getUserSetting']('playbackRateIncrementDecrement')
|
||||
|
||||
const enableSmartSpeed = this.$store.getters['user/getUserSetting']('enableSmartSpeed')
|
||||
this.enableSmartSpeed = enableSmartSpeed !== null ? enableSmartSpeed : false
|
||||
|
||||
const smartSpeedRatio = this.$store.getters['user/getUserSetting']('smartSpeedRatio')
|
||||
this.smartSpeedRatio = smartSpeedRatio !== null ? smartSpeedRatio : 2.5
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue