+
+
+
@@ -13,24 +18,31 @@
- settings
- close
+
-
+
-
@@ -46,7 +92,34 @@ export default {
data() {
return {
chapters: [],
- tocOpen: false
+ tocOpen: false,
+ showSettings: false,
+ ereaderSettings: {
+ theme: 'dark',
+ fontScale: 100,
+ lineSpacing: 115,
+ spread: 'auto'
+ },
+ themeItems: [
+ {
+ text: 'Dark',
+ value: 'dark'
+ },
+ {
+ text: 'Light',
+ value: 'light'
+ }
+ ],
+ spreadItems: [
+ {
+ text: 'Single page',
+ value: 'none'
+ },
+ {
+ text: 'Split page',
+ value: 'auto'
+ }
+ ]
}
},
watch: {
@@ -75,11 +148,8 @@ export default {
streamLibraryItem() {
return this.$store.state.streamLibraryItem
},
- hasToC() {
- return this.isEpub
- },
hasSettings() {
- return false
+ return this.isEpub
},
abTitle() {
return this.mediaMetadata.title
@@ -144,14 +214,28 @@ export default {
},
ebookFileId() {
return this.$store.state.ereaderFileId
+ },
+ isDarkTheme() {
+ return this.ereaderSettings.theme === 'dark'
}
},
methods: {
+ readerMounted() {
+ if (this.isEpub) {
+ this.loadEreaderSettings()
+ }
+ },
+ settingsUpdated() {
+ this.$refs.readerComponent?.updateSettings?.(this.ereaderSettings)
+ localStorage.setItem('ereaderSettings', JSON.stringify(this.ereaderSettings))
+ },
toggleToC() {
this.tocOpen = !this.tocOpen
this.chapters = this.$refs.readerComponent.chapters
},
- openSettings() {},
+ openSettings() {
+ this.showSettings = true
+ },
hotkey(action) {
if (!this.$refs.readerComponent) return
@@ -175,6 +259,17 @@ export default {
unregisterListeners() {
this.$eventBus.$off('reader-hotkey', this.hotkey)
},
+ loadEreaderSettings() {
+ try {
+ const settings = localStorage.getItem('ereaderSettings')
+ if (settings) {
+ this.ereaderSettings = JSON.parse(settings)
+ this.settingsUpdated()
+ }
+ } catch (error) {
+ console.error('Failed to load ereader settings', error)
+ }
+ },
init() {
this.registerListeners()
},
diff --git a/client/components/ui/Btn.vue b/client/components/ui/Btn.vue
index f40fda17..d9b75715 100644
--- a/client/components/ui/Btn.vue
+++ b/client/components/ui/Btn.vue
@@ -73,7 +73,7 @@ export default {
}
-
\ No newline at end of file
diff --git a/client/components/ui/ToggleBtns.vue b/client/components/ui/ToggleBtns.vue
new file mode 100644
index 00000000..2312b26f
--- /dev/null
+++ b/client/components/ui/ToggleBtns.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file