feat: 添加主窗口自适应大小功能,页面缩放功能,支持缩放因子的调整和重置,并在搜索栏中提供缩放控制

This commit is contained in:
alger
2025-05-28 22:08:17 +08:00
parent bf4bcfcde6
commit 61700473b9
7 changed files with 379 additions and 40 deletions
+95
View File
@@ -0,0 +1,95 @@
import { ref } from 'vue';
/**
* 页面缩放功能的组合式API
* 提供页面缩放相关的状态和方法
*/
export function useZoom() {
// 缩放相关常量
const MIN_ZOOM = 0.5;
const MAX_ZOOM = 1.5;
const ZOOM_STEP = 0.05; // 5%的步长
// 当前缩放因子
const zoomFactor = ref(1);
// 初始化获取当前缩放比例
const initZoomFactor = async () => {
try {
const currentZoom = await window.ipcRenderer.invoke('get-content-zoom');
zoomFactor.value = currentZoom;
} catch (error) {
console.error('获取缩放比例失败:', error);
}
};
// 增加缩放比例,保证100%为节点
const increaseZoom = () => {
let newZoom;
// 如果当前缩放低于100%并且增加后会超过100%,则直接设为100%
if (zoomFactor.value < 1.0 && zoomFactor.value + ZOOM_STEP > 1.0) {
newZoom = 1.0; // 精确设置为100%
} else {
newZoom = Math.min(MAX_ZOOM, Math.round((zoomFactor.value + ZOOM_STEP) * 20) / 20);
}
setZoomFactor(newZoom);
};
// 减少缩放比例,保证100%为节点
const decreaseZoom = () => {
let newZoom;
// 如果当前缩放大于100%并且减少后会低于100%,则直接设为100%
if (zoomFactor.value > 1.0 && zoomFactor.value - ZOOM_STEP < 1.0) {
newZoom = 1.0; // 精确设置为100%
} else {
newZoom = Math.max(MIN_ZOOM, Math.round((zoomFactor.value - ZOOM_STEP) * 20) / 20);
}
setZoomFactor(newZoom);
};
// 重置缩放比例到系统建议值
const resetZoom = async () => {
try {
window.ipcRenderer.send('reset-content-zoom');
// 重置后重新获取系统计算的缩放比例
const newZoom = await window.ipcRenderer.invoke('get-content-zoom');
zoomFactor.value = newZoom;
} catch (error) {
console.error('重置缩放比例失败:', error);
}
};
// 设置为100%标准缩放
const setZoom100 = () => {
setZoomFactor(1.0);
};
// 设置缩放比例
const setZoomFactor = (zoom: number) => {
window.ipcRenderer.send('set-content-zoom', zoom);
zoomFactor.value = zoom;
};
// 检查是否为100%缩放
const isZoom100 = () => {
return Math.abs(zoomFactor.value - 1.0) < 0.001;
};
return {
zoomFactor,
initZoomFactor,
increaseZoom,
decreaseZoom,
resetZoom,
setZoom100,
setZoomFactor,
isZoom100,
MIN_ZOOM,
MAX_ZOOM,
ZOOM_STEP
};
}