feat: add page zoom buttons #48

This commit is contained in:
leukipp
2025-08-31 09:24:30 +02:00
parent 9a829f72e3
commit d0ea377ead
3 changed files with 46 additions and 5 deletions
+20
View File
@@ -103,6 +103,26 @@
<li class="dynamic"> <li class="dynamic">
<input id="url" type="text" spellcheck="false" /> <input id="url" type="text" spellcheck="false" />
</li> </li>
<li>
<button id="minus">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<title>magnify-minus</title>
<path
d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z"
/>
</svg>
</button>
</li>
<li>
<button id="plus">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<title>magnify-plus</title>
<path
d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z"
/>
</svg>
</button>
</li>
<li> <li>
<button id="backward"> <button id="backward">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+3 -3
View File
@@ -473,10 +473,10 @@ const initPageZoom = () => {
state_topic: `${root}/state`, state_topic: `${root}/state`,
value_template: "{{ value | int }}", value_template: "{{ value | int }}",
mode: "slider", mode: "slider",
min: 5, min: 25,
max: 500, max: 400,
unit_of_measurement: "%", unit_of_measurement: "%",
icon: "mdi:magnify-plus-outline", icon: "mdi:magnify-plus",
device: INTEGRATION.device, device: INTEGRATION.device,
}; };
publishConfig("number", config) publishConfig("number", config)
+23 -2
View File
@@ -152,8 +152,8 @@ const updateView = () => {
if (!WEBVIEW.viewActive) { if (!WEBVIEW.viewActive) {
return; return;
} }
const title = `TouchKio - ${new URL(WEBVIEW.viewUrls[WEBVIEW.viewActive]).host}`; const title = `TouchKio - ${new URL(WEBVIEW.viewUrls[WEBVIEW.viewActive]).host} (${WEBVIEW.viewActive})`;
console.log(`Update View: ${title} (${WEBVIEW.viewActive})`); console.log(`Update View: ${title}`);
WEBVIEW.window.setTitle(title); WEBVIEW.window.setTitle(title);
// Hide all other webviews and show only the active one // Hide all other webviews and show only the active one
@@ -201,6 +201,16 @@ const updateNavigation = () => {
placeholder: defaultUrl.startsWith("data:") ? "" : defaultUrl, placeholder: defaultUrl.startsWith("data:") ? "" : defaultUrl,
}); });
// Disable zoom buttons
WEBVIEW.navigation.webContents.send("button-disabled", {
id: "minus",
disabled: view.webContents.getZoomFactor().toFixed(2) <= 0.25,
});
WEBVIEW.navigation.webContents.send("button-disabled", {
id: "plus",
disabled: view.webContents.getZoomFactor().toFixed(2) >= 4.0,
});
// Disable history buttons // Disable history buttons
WEBVIEW.navigation.webContents.send("button-disabled", { WEBVIEW.navigation.webContents.send("button-disabled", {
id: "backward", id: "backward",
@@ -522,6 +532,7 @@ const navigationEvents = () => {
// Handle navigation button click events // Handle navigation button click events
ipcMain.on("button-click", (e, button) => { ipcMain.on("button-click", (e, button) => {
const view = WEBVIEW.views[WEBVIEW.viewActive];
switch (button.id) { switch (button.id) {
case "pager": case "pager":
nextView(); nextView();
@@ -531,6 +542,16 @@ const navigationEvents = () => {
reloadView(); reloadView();
hardware.setKeyboardVisibility("OFF"); hardware.setKeyboardVisibility("OFF");
break; break;
case "minus":
view.webContents.setZoomFactor(Math.max(0.25, view.webContents.getZoomFactor() - 0.1));
hardware.setKeyboardVisibility("OFF");
updateView();
break;
case "plus":
view.webContents.setZoomFactor(Math.min(4.0, view.webContents.getZoomFactor() + 0.1));
hardware.setKeyboardVisibility("OFF");
updateView();
break;
case "backward": case "backward":
historyBackward(); historyBackward();
hardware.setKeyboardVisibility("OFF"); hardware.setKeyboardVisibility("OFF");