obsidian-douban/src/douban/setting/TemplateSettingHelper.ts
2022-11-06 20:30:54 +08:00

88 lines
3.4 KiB
TypeScript

import {i18nHelper} from "../../lang/helper";
import {CreateTemplateSelectParams} from "@App/setting/model/CreateTemplateSelectParams";
import { FileSuggest } from "./model/FileSuggest";
import {SearchComponent, Setting} from "obsidian";
import { log } from "src/utils/Logutil";
import {getDefaultTemplateContent} from "../../constant/DefaultTemplateContent";
import {FolderSuggest} from "@App/setting/model/FolderSuggest";
import SettingsManager from "@App/setting/SettingsManager";
export function constructTemplateUI(containerEl: HTMLElement, manager: SettingsManager) {
containerEl.createEl('h3', { text: i18nHelper.getMessage('1203') });
containerEl.createEl('p', { text: i18nHelper.getMessage('1204') });
new Setting(containerEl).setDesc(i18nHelper.getMessage('1205'))
new Setting(containerEl).then(createFileSelectionSetting({name: '120101', desc: '120102', placeholder: '121701', key: 'movieTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({name: '120201', desc: '120202', placeholder: '121701', key: 'bookTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({name: '120301', desc: '120302', placeholder: '121701', key: 'musicTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({name: '120401', desc: '120402', placeholder: '121701', key: 'noteTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({name: '121301', desc: '121302', placeholder: '121701', key: 'gameTemplateFile', manager: manager}));
new Setting(containerEl).then(createFileSelectionSetting({name: '121801', desc: '121802', placeholder: '121701', key: 'teleplayTemplateFile', manager: manager}));
}
export function createFileSelectionSetting({name, desc, placeholder, key, manager
}: CreateTemplateSelectParams) {
return (setting: Setting) => {
// @ts-ignore
setting.setName(i18nHelper.getMessage(name));
// @ts-ignore
setting.setDesc(i18nHelper.getMessage(desc));
setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSetting(key);
let v = defaultVal;
if (oldValue) {
v = oldValue;
}
new FileSuggest(manager.app, search.inputEl);
// @ts-ignore
search.setValue(v);
// @ts-ignore
search.setPlaceholder(i18nHelper.getMessage(placeholder));
search.onChange(async (value: string) => {
manager.updateSetting(key, value);
});
});
setting.addExtraButton((button) => {
button
.setIcon('copy')
.setTooltip(i18nHelper.getMessage('121901'))
.onClick(async () => {
// @ts-ignore
navigator.clipboard.writeText(getDefaultTemplateContent(key))
});
});
};
}
export function createFolderSelectionSetting({
name, desc, placeholder, key, manager,
}: CreateTemplateSelectParams) {
return (setting: Setting) => {
// @ts-ignore
setting.setName( i18nHelper.getMessage(name));
// @ts-ignore
setting.setDesc( i18nHelper.getMessage(desc));
setting.addSearch(async (search: SearchComponent) => {
const [oldValue, defaultVal] = manager.getSetting(key);
let v = defaultVal;
if (oldValue) {
v = oldValue;
}
new FolderSuggest(manager.app, search.inputEl);
// @ts-ignore
search.setValue(v)
// @ts-ignore
.setPlaceholder(i18nHelper.getMessage(placeholder))
.onChange(async (value: string) => {
manager.updateSetting(key, value);
});
});
};
}