mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-28 12:28:48 +01:00
This commit is contained in:
parent
cb17156d6f
commit
6a967f02a5
3 changed files with 64 additions and 1 deletions
|
|
@ -352,5 +352,6 @@ export const appearance = {
|
||||||
if (needLoadAsset) {
|
if (needLoadAsset) {
|
||||||
loadAssets(data);
|
loadAssets(data);
|
||||||
}
|
}
|
||||||
|
document.querySelector("#barMode use").setAttribute("xlink:href", `#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ import {Constants} from "../constants";
|
||||||
import {addScript} from "../protyle/util/addScript";
|
import {addScript} from "../protyle/util/addScript";
|
||||||
import {addStyle} from "../protyle/util/addStyle";
|
import {addStyle} from "../protyle/util/addStyle";
|
||||||
/// #if !MOBILE
|
/// #if !MOBILE
|
||||||
|
import {ipcRenderer} from "electron";
|
||||||
import {getAllModels} from "../layout/getAll";
|
import {getAllModels} from "../layout/getAll";
|
||||||
/// #endif
|
/// #endif
|
||||||
import {isMobile} from "./functions";
|
import {isMobile} from "./functions";
|
||||||
import {fetchPost} from "./fetch";
|
import {fetchPost} from "./fetch";
|
||||||
|
import {exportLayout} from "../layout/util";
|
||||||
|
|
||||||
export const loadAssets = (data: IAppearance) => {
|
export const loadAssets = (data: IAppearance) => {
|
||||||
const defaultStyleElement = document.getElementById("themeDefaultStyle");
|
const defaultStyleElement = document.getElementById("themeDefaultStyle");
|
||||||
|
|
@ -150,3 +152,31 @@ export const setCodeTheme = (cdn = Constants.PROTYLE_CDN) => {
|
||||||
addStyle(href, "protyleHljsStyle");
|
addStyle(href, "protyleHljsStyle");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const setMode = (modeElementValue: number) => {
|
||||||
|
fetchPost("/api/setting/setAppearance", Object.assign({}, window.siyuan.config.appearance, {
|
||||||
|
mode: modeElementValue === 2 ? window.siyuan.config.appearance.mode : modeElementValue,
|
||||||
|
modeOS: modeElementValue === 2,
|
||||||
|
}), response => {
|
||||||
|
if ((
|
||||||
|
window.siyuan.config.appearance.themeJS && !response.data.modeOS &&
|
||||||
|
(
|
||||||
|
response.data.mode !== window.siyuan.config.appearance.mode ||
|
||||||
|
window.siyuan.config.appearance.themeLight !== response.data.themeLight ||
|
||||||
|
window.siyuan.config.appearance.themeDark !== response.data.themeDark
|
||||||
|
)
|
||||||
|
) ||
|
||||||
|
(response.data.modeOS && !window.siyuan.config.appearance.modeOS)
|
||||||
|
) {
|
||||||
|
exportLayout(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.siyuan.config.appearance = response.data
|
||||||
|
/// #if !BROWSER
|
||||||
|
ipcRenderer.send(Constants.SIYUAN_CONFIG_THEME, response.data.modeOS ? "system" : (response.data.mode === 1 ? "dark" : "light"));
|
||||||
|
ipcRenderer.send(Constants.SIYUAN_CONFIG_CLOSE, response.data.closeButtonBehavior);
|
||||||
|
/// #endif
|
||||||
|
loadAssets(response.data);
|
||||||
|
document.querySelector("#barMode use").setAttribute("xlink:href", `#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import {globalShortcut} from "./globalShortcut";
|
||||||
import {fetchPost} from "./fetch";
|
import {fetchPost} from "./fetch";
|
||||||
import {mountHelp, newDailyNote} from "./mount";
|
import {mountHelp, newDailyNote} from "./mount";
|
||||||
import {MenuItem} from "../menus/Menu";
|
import {MenuItem} from "../menus/Menu";
|
||||||
import {initAssets, loadAssets, renderSnippet, setInlineStyle} from "./assets";
|
import {initAssets, loadAssets, renderSnippet, setInlineStyle, setMode} from "./assets";
|
||||||
import {goBack, goForward} from "./backForward";
|
import {goBack, goForward} from "./backForward";
|
||||||
import {getOpenNotebookCount} from "./pathName";
|
import {getOpenNotebookCount} from "./pathName";
|
||||||
import {openFileById} from "../editor/util";
|
import {openFileById} from "../editor/util";
|
||||||
|
|
@ -180,6 +180,9 @@ const initBar = () => {
|
||||||
<div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly}">
|
<div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly}">
|
||||||
<svg><use xlink:href="#icon${window.siyuan.config.editor.readOnly ? "Preview" : "Edit"}"></use></svg>
|
<svg><use xlink:href="#icon${window.siyuan.config.editor.readOnly ? "Preview" : "Edit"}"></use></svg>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="barMode" class="toolbar__item b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.appearance4}">
|
||||||
|
<svg><use xlink:href="#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}"></use></svg>
|
||||||
|
</div>
|
||||||
<button id="barBack" data-menu="true" class="toolbar__item toolbar__item--disabled b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.goBack} ${updateHotkeyTip(window.siyuan.config.keymap.general.goBack.custom)}">
|
<button id="barBack" data-menu="true" class="toolbar__item toolbar__item--disabled b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.goBack} ${updateHotkeyTip(window.siyuan.config.keymap.general.goBack.custom)}">
|
||||||
<svg><use xlink:href="#iconLeft"></use></svg>
|
<svg><use xlink:href="#iconLeft"></use></svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -203,6 +206,35 @@ const initBar = () => {
|
||||||
editor.setMode();
|
editor.setMode();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
break;
|
break;
|
||||||
|
} else if (target.id === "barMode") {
|
||||||
|
window.siyuan.menus.menu.remove();
|
||||||
|
window.siyuan.menus.menu.append(new MenuItem({
|
||||||
|
label: window.siyuan.languages.themeLight,
|
||||||
|
icon: "iconLight",
|
||||||
|
current: window.siyuan.config.appearance.mode === 0 && !window.siyuan.config.appearance.modeOS,
|
||||||
|
click: () => {
|
||||||
|
setMode(0);
|
||||||
|
}
|
||||||
|
}).element);
|
||||||
|
window.siyuan.menus.menu.append(new MenuItem({
|
||||||
|
label: window.siyuan.languages.themeDark,
|
||||||
|
current: window.siyuan.config.appearance.mode === 1 && !window.siyuan.config.appearance.modeOS,
|
||||||
|
icon: "iconDark",
|
||||||
|
click: () => {
|
||||||
|
setMode(1);
|
||||||
|
}
|
||||||
|
}).element);
|
||||||
|
window.siyuan.menus.menu.append(new MenuItem({
|
||||||
|
label: window.siyuan.languages.themeOS,
|
||||||
|
current: window.siyuan.config.appearance.modeOS,
|
||||||
|
icon: "iconMode",
|
||||||
|
click: () => {
|
||||||
|
setMode(2);
|
||||||
|
}
|
||||||
|
}).element);
|
||||||
|
window.siyuan.menus.menu.popup({x: event.clientX, y: event.clientY + 8});
|
||||||
|
event.stopPropagation();
|
||||||
|
break;
|
||||||
} else if (target.id === "barForward") {
|
} else if (target.id === "barForward") {
|
||||||
goForward();
|
goForward();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue