diff --git a/src/lib/components/NavBar.svelte b/src/lib/components/NavBar.svelte
index b3bfd56..609f792 100644
--- a/src/lib/components/NavBar.svelte
+++ b/src/lib/components/NavBar.svelte
@@ -3,7 +3,7 @@
import { UserSettingsSolid, UploadSolid } from 'flowbite-svelte-icons';
import { afterNavigate } from '$app/navigation';
import { page } from '$app/stores';
- import Settings from './Settings.svelte';
+ import Settings from './Settings/Settings.svelte';
import UploadModal from './UploadModal.svelte';
import { settings } from '$lib/settings';
diff --git a/src/lib/components/Settings.svelte b/src/lib/components/Settings.svelte
deleted file mode 100644
index 2cf84d1..0000000
--- a/src/lib/components/Settings.svelte
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
- Settings
-
- (hidden = true)} class="mb-4 dark:text-white" />
-
-
-
-
-
- {#each toggles as { key, text, value }}
-
updateSetting(key, !value)}
- >{text}
- {/each}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/lib/components/Settings/AnkiConnectSettings.svelte b/src/lib/components/Settings/AnkiConnectSettings.svelte
new file mode 100644
index 0000000..fa04b22
--- /dev/null
+++ b/src/lib/components/Settings/AnkiConnectSettings.svelte
@@ -0,0 +1,65 @@
+
+
+
+ Anki Connect
+
+
+ updateAnkiSetting('enabled', enabled)}
+ >AnkiConnect Integration Enabled
+
+
+
+ updateAnkiSetting('pictureField', pictureField)}
+ />
+
+
+
+ updateAnkiSetting('sentenceField', sentenceField)}
+ />
+
+
+ updateAnkiSetting('cropImage', cropImage)}>Crop image
+
+
+ updateAnkiSetting('overwriteImage', overwriteImage)}
+ >Overwrite image
+
+
+ updateAnkiSetting('grabSentence', grabSentence)}>Grab sentence
+
+
+
diff --git a/src/lib/components/Settings/ReaderSelects.svelte b/src/lib/components/Settings/ReaderSelects.svelte
new file mode 100644
index 0000000..5d3f8cb
--- /dev/null
+++ b/src/lib/components/Settings/ReaderSelects.svelte
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Settings/ReaderSettings.svelte b/src/lib/components/Settings/ReaderSettings.svelte
new file mode 100644
index 0000000..4c8a365
--- /dev/null
+++ b/src/lib/components/Settings/ReaderSettings.svelte
@@ -0,0 +1,15 @@
+
+
+
+ Reader
+
+
+
+
+
+
diff --git a/src/lib/components/Settings/ReaderToggles.svelte b/src/lib/components/Settings/ReaderToggles.svelte
new file mode 100644
index 0000000..df2d22a
--- /dev/null
+++ b/src/lib/components/Settings/ReaderToggles.svelte
@@ -0,0 +1,19 @@
+
+
+{#each toggles as { key, text, value }}
+ updateSetting(key, !value)}>{text}
+{/each}
diff --git a/src/lib/components/Settings/Settings.svelte b/src/lib/components/Settings/Settings.svelte
new file mode 100644
index 0000000..985ae3f
--- /dev/null
+++ b/src/lib/components/Settings/Settings.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+
+ Settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/settings/index.ts b/src/lib/settings/index.ts
index 6d06725..d1d21bf 100644
--- a/src/lib/settings/index.ts
+++ b/src/lib/settings/index.ts
@@ -37,13 +37,26 @@ export type Settings = {
backgroundColor: string;
fontSize: FontSize;
zoomDefault: ZoomModes;
+ ankiConnectSettings: AnkiConnectSettings;
};
export type SettingsKey = keyof Settings;
+export type AnkiConnectSettings = {
+ enabled: boolean;
+ pictureField: string;
+ sentenceField: string;
+ cropImage: boolean;
+ overwriteImage: boolean;
+ grabSentence: boolean;
+}
+
+export type AnkiSettingsKey = keyof AnkiConnectSettings;
+
+
const defaultSettings: Settings = {
rightToLeft: true,
- singlePageView: true,
+ singlePageView: false,
hasCover: false,
displayOCR: true,
textEditable: false,
@@ -52,7 +65,15 @@ const defaultSettings: Settings = {
pageNum: true,
backgroundColor: '#0d0d0f',
fontSize: 'auto',
- zoomDefault: 'zoomFitToScreen'
+ zoomDefault: 'zoomFitToScreen',
+ ankiConnectSettings: {
+ enabled: false,
+ cropImage: false,
+ grabSentence: false,
+ overwriteImage: true,
+ pictureField: 'Picture',
+ sentenceField: 'Sentence'
+ }
};
const stored = browser ? window.localStorage.getItem('settings') : undefined;
@@ -72,6 +93,18 @@ export function updateSetting(key: SettingsKey, value: any) {
zoomDefault();
}
+export function updateAnkiSetting(key: AnkiSettingsKey, value: any) {
+ settings.update((settings) => {
+ return {
+ ...settings,
+ ankiConnectSettings: {
+ ...settings.ankiConnectSettings,
+ [key]: value
+ }
+ };
+ });
+}
+
export function resetSettings() {
settings.set(defaultSettings);
}