diff --git a/src/components/Device.vue b/src/components/Device.vue index c139a9d..fc5915b 100644 --- a/src/components/Device.vue +++ b/src/components/Device.vue @@ -21,7 +21,6 @@ import { } from "../invoke"; import { NH4, - NP, NInput, NInputNumber, NButton, @@ -30,7 +29,6 @@ import { NEmpty, NTooltip, NFlex, - NFormItem, NIcon, NSpin, NScrollbar, @@ -42,7 +40,6 @@ import { } from "naive-ui"; import { CloseCircle, InformationCircle, Refresh } from "@vicons/ionicons5"; import { UnlistenFn, listen } from "@tauri-apps/api/event"; -import { Store } from "@tauri-apps/plugin-store"; import { shutdown } from "../frontcommand/scrcpyMaskCmd"; import { useGlobalStore } from "../store/global"; import { useI18n } from "vue-i18n"; @@ -57,10 +54,9 @@ const port = ref(27183); const wireless_address = ref(""); const ws_address = ref(""); -const localStore = new Store("store.bin"); - //#region listener let deviceWaitForMetadataTask: ((deviceName: string) => void) | null = null; +let deviceWaitForScreenSizeTask: ((w: number, h: number) => void) | null = null; let unlisten: UnlistenFn | undefined; onMounted(async () => { @@ -77,6 +73,15 @@ onMounted(async () => { case "ClipboardSetAck": console.log("ClipboardSetAck", payload.sequence); break; + case "DeviceRotation": + if (deviceWaitForScreenSizeTask) { + deviceWaitForScreenSizeTask(payload.width, payload.height); + } else { + store.screenSizeW = payload.width; + store.screenSizeH = payload.height; + message.info("设备旋转"); + } + break; default: console.log("Unknown reply", payload); break; @@ -216,24 +221,12 @@ async function deviceControl() { port.value = 27183; } - if (!(store.screenSizeW > 0) || !(store.screenSizeH > 0)) { - message.error(t("pages.Device.deviceControl.inputScreenSize")); - store.screenSizeW = 0; - store.screenSizeH = 0; - store.hideLoading(); - return; - } - if (store.controledDevice) { message.error(t("pages.Device.deviceControl.closeCurDevice")); store.hideLoading(); return; } - localStore.set("screenSize", { - sizeW: store.screenSizeW, - sizeH: store.screenSizeH, - }); message.info(t("pages.Device.deviceControl.controlInfo")); const device = devices.value[rowIndex]; @@ -263,11 +256,26 @@ async function deviceControl() { deviceName, deviceID: device.id, }; - nextTick(() => { - deviceWaitForMetadataTask = null; - clearTimeout(id); - store.hideLoading(); - }); + deviceWaitForMetadataTask = null; + if (!deviceWaitForScreenSizeTask) { + nextTick(() => { + clearTimeout(id); + store.hideLoading(); + }); + } + }; + + // add cb for screen size + deviceWaitForScreenSizeTask = (w: number, h: number) => { + store.screenSizeW = w; + store.screenSizeH = h; + deviceWaitForScreenSizeTask = null; + if (!deviceWaitForMetadataTask) { + nextTick(() => { + clearTimeout(id); + store.hideLoading(); + }); + } }; } @@ -373,26 +381,6 @@ function closeWS() { $t("pages.Device.wsConnect") }} - {{ $t("pages.Device.deviceSize.title") }} - - - - - - - - - {{ $t("pages.Device.deviceSize.tip") }} {{ $t("pages.Device.controledDevice") }}
{ const externalControlled = ref(false); - // persistent storage const screenSizeW: Ref = ref(0); const screenSizeH: Ref = ref(0); + + // persistent storage const keyMappingConfigList: Ref = ref([]); const curKeyMappingIndex = ref(0); const maskButton = ref({ @@ -84,14 +85,14 @@ export const useGlobalStore = defineStore("global", () => { return { // persistent storage - screenSizeW, - screenSizeH, keyMappingConfigList, curKeyMappingIndex, maskButton, checkUpdateAtStart, externalControlled, // in-memory storage + screenSizeW, + screenSizeH, showLoading, hideLoading, showLoadingRef,