From caaece6b4fe607ff5cec1ec941d322689386b168 Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Thu, 28 Aug 2025 08:05:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/XSystem.ts | 19 +++++++- src/core/desktop/DesktopProcess.ts | 1 + src/core/desktop/ui/DesktopComponent.vue | 16 ++++-- src/core/process/IProcess.ts | 5 +- src/core/process/impl/ProcessImpl.ts | 9 ++-- src/core/state/impl/ObservableWeakRefImpl.ts | 2 +- src/core/state/store/GlobalStore.ts | 0 src/core/system/BasicSystemProcess.ts | 2 +- src/core/window/IWindowForm.ts | 6 +++ src/core/window/WindowForm.ts | 22 --------- src/core/window/impl/WindowFormImpl.ts | 51 ++++++++++++++++++++ src/core/window/types/IWindowFormConfig.ts | 2 +- src/core/window/types/WindowFormTypes.ts | 7 +++ tsconfig.app.json | 1 + 14 files changed, 107 insertions(+), 36 deletions(-) create mode 100644 src/core/state/store/GlobalStore.ts create mode 100644 src/core/window/IWindowForm.ts delete mode 100644 src/core/window/WindowForm.ts create mode 100644 src/core/window/impl/WindowFormImpl.ts create mode 100644 src/core/window/types/WindowFormTypes.ts diff --git a/src/core/XSystem.ts b/src/core/XSystem.ts index f84db82..5bc4901 100644 --- a/src/core/XSystem.ts +++ b/src/core/XSystem.ts @@ -1,6 +1,5 @@ import ProcessManageImpl from './process/impl/ProcessManageImpl.ts' import ProcessImpl from './process/impl/ProcessImpl.ts' -import type { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts' import { isUndefined } from 'lodash' import { BasicSystemProcess } from '@/core/system/BasicSystemProcess.ts' import { DesktopProcess } from '@/core/desktop/DesktopProcess.ts' @@ -10,12 +9,22 @@ import { EventBuilderImpl } from '@/core/events/impl/EventBuilderImpl.ts' import type { IProcessManage } from '@/core/process/IProcessManage.ts' import type { IProcess } from '@/core/process/IProcess.ts' import type { IProcessInfo } from '@/core/process/IProcessInfo.ts' +import { ObservableWeakRefImpl } from '@/core/state/impl/ObservableWeakRefImpl.ts' +import type { IObservable } from '@/core/state/IObservable.ts' + +interface IGlobalState { + isLogin: boolean +} export default class XSystem { private static _instance: XSystem = new XSystem() private _processManage: IProcessManage = new ProcessManageImpl() private _eventManage: IEventBuilder = new EventBuilderImpl() + private _globalState: IObservable = new ObservableWeakRefImpl({ + isLogin: false + }) + private _desktopRootDom: HTMLElement; constructor() { console.log('XSystem') @@ -30,11 +39,19 @@ export default class XSystem { public get eventManage() { return this._eventManage } + public get globalState() { + return this._globalState + } + public get desktopRootDom() { + return this._desktopRootDom + } public initialization(dom: HTMLDivElement) { + this._desktopRootDom = dom this.run('basic-system', BasicSystemProcess).then(() => { this.run('desktop', DesktopProcess).then((proc) => { proc.mount(dom) + // console.log(dom.querySelector('.desktop-root')) }) }) } diff --git a/src/core/desktop/DesktopProcess.ts b/src/core/desktop/DesktopProcess.ts index 389120b..4dcb7f7 100644 --- a/src/core/desktop/DesktopProcess.ts +++ b/src/core/desktop/DesktopProcess.ts @@ -88,6 +88,7 @@ export class DesktopProcess extends ProcessImpl { dom.style.zIndex = '0'; dom.style.width = `${this._width}px` dom.style.height = `${this._height}px` + dom.style.position = 'relative' this._desktopRootDom = dom const app = createApp(DesktopComponent, { process: this }) diff --git a/src/core/desktop/ui/DesktopComponent.vue b/src/core/desktop/ui/DesktopComponent.vue index 417823e..e7bf7e8 100644 --- a/src/core/desktop/ui/DesktopComponent.vue +++ b/src/core/desktop/ui/DesktopComponent.vue @@ -5,10 +5,13 @@ >
-
+ :iconInfo="appIcon" :gridTemplate="gridTemplate" + @dblclick="runApp(appIcon)" + /> + />
@@ -25,10 +28,11 @@ import { DesktopEventEnum } from '@/core/events/EventTypes.ts' import { useDesktopInit } from '@/core/desktop/ui/hooks/useDesktopInit.ts' import AppIcon from '@/core/desktop/ui/components/AppIcon.vue' import { watch } from 'vue' +import type { IDesktopAppIcon } from '@/core/desktop/types/IDesktopAppIcon.ts' const props = defineProps<{ process: DesktopProcess }>() -const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container') +const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-icons-container') XSystem.instance.eventManage.addEventListener( DesktopEventEnum.onDesktopRootDomResize, @@ -45,6 +49,10 @@ XSystem.instance.eventManage.addEventListener( const onContextMenu = (e: MouseEvent) => { e.preventDefault() } + +const runApp = (appIcon: IDesktopAppIcon) => { + XSystem.instance.run(appIcon.name) +}