diff --git a/entry/src/main/ets/pages/AppStorageV2Class.ets b/entry/src/main/ets/pages/AppStorageV2Class.ets index aa3c2637..75dcca3f 100644 --- a/entry/src/main/ets/pages/AppStorageV2Class.ets +++ b/entry/src/main/ets/pages/AppStorageV2Class.ets @@ -1,4 +1,7 @@ -import { window} from '@kit.ArkUI'; +import { AppStorageV2, window} from '@kit.ArkUI'; + +//该文档主要储存屏幕信息,主窗口信息,窗口管理信息 +//底部有全局信息变量,已导出,其他page只需要import该文件即可调用let变量 @ObservedV2 export class MainScreenDisplayInfo { @Trace public mainScreenDisplayId: number; @@ -31,4 +34,9 @@ export class MainWindowStageInfo { this.ws = _ws ?? undefined; } } +//全局保存主窗口信息,屏幕信息.窗口管理器信息 +export let mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; +export let msdInfo: MainScreenDisplayInfo = AppStorageV2.connect(MainScreenDisplayInfo, () => new MainScreenDisplayInfo())!; +export let mwsInfo: MainWindowStageInfo = AppStorageV2.connect(MainWindowStageInfo, () => new MainWindowStageInfo())!; + diff --git a/entry/src/main/ets/pages/CustomStyle/Button.ets b/entry/src/main/ets/pages/CustomStyle/Button.ets index cb8e745c..ff2147cb 100644 --- a/entry/src/main/ets/pages/CustomStyle/Button.ets +++ b/entry/src/main/ets/pages/CustomStyle/Button.ets @@ -3,85 +3,170 @@ import { ExecuteCommand } from '../EventSubWindow/ExecuteCommand'; import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; import { TitleModel } from "../LayoutInterface/Interface/ModelInterface"; import { TitleData } from '../LayoutInterface/Layout/TabContent'; -import { AppStorageV2 } from '@kit.ArkUI'; -import { MainWindowInfo } from '../AppStorageV2Class'; +import { mwInfo } from '../AppStorageV2Class'; +//按钮统一尺寸,该按钮为正方形,所以以主窗口宽为基准,长=高->正方形 +let ebWidth=mwInfo.mainWindowWidth*0.02; +let ebHeigth=mwInfo.mainWindowWidth*0.02; +//占位符的高度 +let edHeigth=mwInfo.mainWindowWidth*0.005 //单一功能按钮 //图片->文本 //不能用于模块切换 + @ComponentV2 export struct EventBtn { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; - @Param eventBtn: TitleButton | undefined = undefined; - build() { - Column({ space: 0 }) { - if (this.eventBtn != undefined) { - Button() - .width(this.mwInfo.mainWindowWidth*0.02) - .height(this.mwInfo.mainWindowWidth*0.02) - .backgroundImage($r('app.media.' + this.eventBtn.eIcon)) - .backgroundImagePosition({ x: '5%', y: '5%' }) - .backgroundColor(Color.Transparent) - .backgroundImageSize({ - width: '90%', // 图片宽度占满按钮 - height: '90%' // 图片高度占满按钮 - }) - .onClick(()=>{ - ExecuteCommand(this.eventBtn as TitleButton); - }) - Text() - .width('auto') - .height(this.mwInfo.mainWindowWidth*0.005) - .backgroundColor(Color.Transparent) - Text(this.eventBtn.eName) - .fontSize(16) - .width('auto') - .height(this.mwInfo.mainWindowWidth*0.005) - .textAlign(TextAlign.Center) - .backgroundColor(Color.Transparent) - } - }.padding(1) - } -} - -//仅仅用于模块切换 -@ComponentV2 -export struct SwitchModelBtn { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; + //按钮动态布局类型,目前处于开发阶段两种状态. + //1-eventBtn==false为普通按钮,支持所有功能 + //2-eventBtn==true为模块切换模块独立的功能 + @Param eventBtnType?:boolean=false; + //普通功能按钮调用的数据 @Param eventBtn: TitleButton | undefined = undefined; + //模块切换模块按钮数据 @Consumer('curtModel') curtModel: Array | undefined = TitleData.mModels.get(0) + build() { Column({ space: 2 }) { + //如果该类型是false表示为配普通事件按钮 + if(!this.eventBtnType){ + if (this.eventBtn != undefined) { + Button() + .width(ebWidth) + .height(ebHeigth) + .backgroundImage($r('app.media.' + this.eventBtn.eIcon)) + .backgroundImagePosition({ x: '5%', y: '5%' }) + .backgroundColor(Color.Transparent) + .backgroundImageSize({ + width: '90%', // 图片宽度占满按钮 + height: '90%' // 图片高度占满按钮 + }) + .onClick(()=>{ + ExecuteCommand(this.eventBtn as TitleButton); + }) + } + }else { + //判断类型为true,属于模块切换事件 + if (this.eventBtn != undefined) { + Button() + .width(ebWidth) + .height(ebHeigth) + .backgroundImage($r('app.media.' + this.eventBtn.eIcon)) + .backgroundImagePosition({ x: '5%', y: '5%' }) + .backgroundColor(Color.Transparent) + .backgroundImageSize({ + width: '90%', // 图片宽度占满按钮 + height: '90%' // 图片高度占满按钮 + }) + .onClick(() => { + if (this.eventBtn?.eEvent == 'Switch_Model_CAD') { + this.curtModel = TitleData.mModels.get(1) + } else if (this.eventBtn?.eEvent == 'Switch_Model_CAM') { + this.curtModel = TitleData.mModels.get(2) + } else if (this.eventBtn?.eEvent == 'Switch_Model_CAE') { + this.curtModel = TitleData.mModels.get(3) + } + }) + } + } if (this.eventBtn != undefined) { - Button() - .width(this.mwInfo.mainWindowWidth*0.02) - .height(this.mwInfo.mainWindowWidth*0.02) - .backgroundImage($r('app.media.' + this.eventBtn.eIcon)) - .backgroundImagePosition({ x: '5%', y: '5%' }) - .backgroundColor(Color.Transparent) - .backgroundImageSize({ - width: '90%', // 图片宽度占满按钮 - height: '90%' // 图片高度占满按钮 - }).onClick(() => { - if (this.eventBtn?.eEvent == 'Switch_Model_CAD') { - this.curtModel = TitleData.mModels.get(1) - } else if (this.eventBtn?.eEvent == 'Switch_Model_CAM') { - this.curtModel = TitleData.mModels.get(2) - } else if (this.eventBtn?.eEvent == 'Switch_Model_CAE') { - this.curtModel = TitleData.mModels.get(3) - } - }) Text() .width('auto') - .height(this.mwInfo.mainWindowWidth*0.005) + .height(edHeigth) .backgroundColor(Color.Transparent) Text(this.eventBtn.eName) .fontSize(16) .width('auto') - .height(this.mwInfo.mainWindowWidth*0.005) + .height(edHeigth) .textAlign(TextAlign.Center) + .backgroundColor(Color.Transparent) } }.padding(1) } } +//菜单目录按钮 +//功能目录菜单,主要用于针对单一按钮多个功能形式 +@ComponentV2 +export struct MenuBtn { + @Param menuBtn: Array | undefined = undefined; + @Local curtIndex:number=0; + @Builder + EventMenu() { + Menu() { + ForEach(this.menuBtn, (item: TitleButton, index: number) => { + MenuItem({ startIcon: $r('app.media.' + item.eIcon), content: item.eName }) + .onClick(()=>{ + this.curtIndex=index; + ExecuteCommand(item as TitleButton); + }).size({height: ebWidth}) + }) + }.fontSize(20) + } + + build() { + Column({ space: 0 }) { + if (this.menuBtn != undefined) { + Button() + .bindMenu(this.EventMenu) + .width(ebWidth) + .height(ebHeigth) + .backgroundImage($r('app.media.' + this.menuBtn[this.curtIndex].eIcon)) + .backgroundImagePosition({ x: '5%', y: '5%' }) + .backgroundColor(Color.Transparent) + .backgroundImageSize({ + width: '90%', // 图片宽度占满按钮 + height: '90%' // 图片高度占满按钮 + }) + Button() + .type(ButtonType.Normal) + .bindMenu(this.EventMenu) + .width(ebWidth) + .height(edHeigth) + .backgroundImage($r('app.media.base_chevron_down')) + .backgroundImagePosition({ x: '35%', y: '0%' }) + .backgroundColor(Color.Transparent) + + Text(this.menuBtn[this.curtIndex].eName) + .fontSize(16) + .width('auto') + .height(edHeigth) + .textAlign(TextAlign.Center) + } + } + .padding(1) + } +} + +//Title Sub功能目录菜单 +@ComponentV2 +export struct SubColumnMenu { + @Param menus: Array| undefined = undefined; + @Param icon:string=''; + @Builder + EventMenu() { + Menu() { + ForEach(this.menus, (item: TitleButton, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) + .width('150') + .size({height: mwInfo.mainWindowWidth*0.02}) + }) + }.fontSize(20) + } + build(){ + Row(){ + Button() + .padding(1) + .width(mwInfo.mainWindowWidth*0.013) + .height(mwInfo.mainWindowWidth*0.013) + .backgroundColor(Color.Transparent) + .backgroundImage($r('app.media.'+this.icon)) + .backgroundImagePosition({ x: '5%', y: '5%' }) + .backgroundImageSize({ + width: '90%', // 图片宽度占满按钮 + height: '90%' // 图片高度占满按钮 + }) + .bindMenu(this.EventMenu()) + .type(ButtonType.Normal) + } + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/CustomStyle/ComboBox.ets b/entry/src/main/ets/pages/CustomStyle/ComboBox.ets index 195d3b94..05c357df 100644 --- a/entry/src/main/ets/pages/CustomStyle/ComboBox.ets +++ b/entry/src/main/ets/pages/CustomStyle/ComboBox.ets @@ -1,3 +1,4 @@ +import { mwInfo } from "../AppStorageV2Class"; import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; @ComponentV2 @@ -9,12 +10,10 @@ export struct TextComboBox { Menu() { ForEach(this.menu, (item: TitleButton, index: number) => { MenuItem({ content: item.eName }) - .labelFont({ size: 20}) - .width('auto') + .size({height: mwInfo.mainWindowWidth*0.02}) .onClick(()=>{ this.selectIndex=index; }) - .backgroundColor('#f3f3f0') }) } } @@ -34,12 +33,10 @@ export struct TextInputComboBox { Menu() { ForEach(this.menu, (item: TitleButton, index: number) => { MenuItem({ content: item.eName }) - .labelFont({ size: 20}) - .width('auto') + .size({height: mwInfo.mainWindowWidth*0.02}) .onClick(()=>{ this.selectIndex=index; }) - .backgroundColor('#f3f3f0') }) } } diff --git a/entry/src/main/ets/pages/CustomStyle/Menu.ets b/entry/src/main/ets/pages/CustomStyle/Menu.ets index f738549e..a7d3fec4 100644 --- a/entry/src/main/ets/pages/CustomStyle/Menu.ets +++ b/entry/src/main/ets/pages/CustomStyle/Menu.ets @@ -1,28 +1,25 @@ import { TitleMenu } from "../LayoutInterface/Interface/MenuInterface"; import { TitleGroup } from "../LayoutInterface/Interface/GroupInterface"; import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; -import { EventBtn } from "./Button"; import { ExecuteCommand } from "../EventSubWindow/ExecuteCommand"; -import { AppStorageV2 } from "@kit.ArkUI"; -import { MainWindowInfo } from "../AppStorageV2Class"; +import { mwInfo } from "../AppStorageV2Class"; //菜单按钮 //主要用于功能组操作菜单.文件下拉菜单等. @ComponentV2 export struct GroupTextEventMenu { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; @Param grpEvent: TitleGroup | undefined = undefined; @Builder GroupMenu(menus: Array) { - ForEach(menus, (item: TitleMenu, index: number) => { - MenuItem({ startIcon: $r('app.media.' + item.mIcon), content: item.mName }) - .labelFont({ size: 20}) - .width('auto') - }) + Menu() { + ForEach(menus, (item: TitleMenu, index: number) => { + MenuItem({ startIcon: $r('app.media.' + item.mIcon), content: item.mName }) + .size({height: mwInfo.mainWindowWidth*0.02}) + }) + }.fontSize(20) } - build() { Row() { if (this.grpEvent != undefined) { @@ -33,8 +30,8 @@ export struct GroupTextEventMenu { .fontColor(Color.Gray) Blank().width('auto') Button() - .height(this.mwInfo.mainWindowWidth*0.01) - .width(this.mwInfo.mainWindowWidth*0.01) + .height(mwInfo.mainWindowWidth*0.005) + .width(mwInfo.mainWindowWidth*0.005) .padding(1) .backgroundImage($r('app.media.base_seetings')) .backgroundImagePosition({ x: '5%', y: '5%' }) @@ -49,59 +46,5 @@ export struct GroupTextEventMenu { } } -//菜单目录按钮 -//功能目录菜单,主要用于针对单一按钮多个功能形式 -@ComponentV2 -export struct MenuBtn { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; - @Param menuBtn: Array | undefined = undefined; - @Param iconState: boolean = false; - @Local curtIndex:number=0; - @Builder - EventMenu() { - Menu() { - ForEach(this.menuBtn, (item: TitleButton, index: number) => { - MenuItem({ startIcon: $r('app.media.' + item.eIcon), content: item.eName }) - .labelFont({ size: 20}) - .onClick(()=>{ - this.curtIndex=index; - ExecuteCommand(item as TitleButton); - }) - }) - } - } - build() { - Column({ space: 0 }) { - if (this.menuBtn != undefined) { - Button() - .bindMenu(this.EventMenu) - .width(this.mwInfo.mainWindowWidth*0.02) - .height(this.mwInfo.mainWindowWidth*0.02) - .backgroundImage($r('app.media.' + this.menuBtn[this.curtIndex].eIcon)) - .backgroundImagePosition({ x: '5%', y: '5%' }) - .backgroundColor(Color.Transparent) - .backgroundImageSize({ - width: '90%', // 图片宽度占满按钮 - height: '90%' // 图片高度占满按钮 - }) - Button() - .type(ButtonType.Normal) - .bindMenu(this.EventMenu) - .width(this.mwInfo.mainWindowWidth*0.02) - .height(this.mwInfo.mainWindowWidth*0.005) - .backgroundImage($r('app.media.base_chevron_down')) - .backgroundImagePosition({ x: '40%', y: '0%' }) - .backgroundColor(Color.Transparent) - - Text(this.menuBtn[this.curtIndex].eName) - .fontSize(16) - .width('auto') - .height(this.mwInfo.mainWindowWidth*0.005) - .textAlign(TextAlign.Center) - } - } - .padding(1) - } -} diff --git a/entry/src/main/ets/pages/EventSubWindow/SWBase.ets b/entry/src/main/ets/pages/EventSubWindow/SWBase.ets index 86589670..ac906fbb 100644 --- a/entry/src/main/ets/pages/EventSubWindow/SWBase.ets +++ b/entry/src/main/ets/pages/EventSubWindow/SWBase.ets @@ -1,15 +1,12 @@ import { BusinessError } from '@kit.BasicServicesKit'; -import { window,UIContext, AppStorageV2} from '@kit.ArkUI'; -import { MainWindowInfo, MainWindowStageInfo } from '../AppStorageV2Class'; +import { window} from '@kit.ArkUI'; +import { mwInfo, mwsInfo } from '../AppStorageV2Class'; let subWindow: window.Window | undefined = undefined; export async function CreateAndShowSubWindow(name:string,pages:string) { try { - const appws=AppStorageV2.connect(MainWindowStageInfo, () => new MainWindowStageInfo())!; - const mwInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; - const windowStage = appws.ws; - if(windowStage==null){ + if(mwsInfo.ws==null){ console.error('Failed to create the subwindow. Cause: windowStage is null'); return; } @@ -22,7 +19,7 @@ export async function CreateAndShowSubWindow(name:string,pages:string) { outlineEnabled:true, }; - await windowStage.createSubWindowWithOptions('subWindow', options).then((data) => { + await mwsInfo.ws.createSubWindowWithOptions('subWindow', options).then((data) => { subWindow = data; subWindow.setResizeByDragEnabled(true, (err: BusinessError) => { console.log("设置拖拽缩放", `报错信息:${err.code}, ${err.message}`) diff --git a/entry/src/main/ets/pages/EventSubWindow/SWExtrude.ets b/entry/src/main/ets/pages/EventSubWindow/SWExtrude.ets index 5c513732..97dbf477 100644 --- a/entry/src/main/ets/pages/EventSubWindow/SWExtrude.ets +++ b/entry/src/main/ets/pages/EventSubWindow/SWExtrude.ets @@ -1,11 +1,9 @@ -import { MainWindowInfo } from '../AppStorageV2Class'; +import { mwInfo } from '../AppStorageV2Class'; import { Expandable } from '../CustomStyle/Expandable'; -import { AppStorageV2 } from '@kit.ArkUI'; @Entry @ComponentV2 struct SWExtrude { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; // 控制内容区域显示与隐藏的状态 @Provider('isSubExpanded') isExpanded:boolean=true; build() { diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index e42371c5..d5765fa2 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -4,24 +4,22 @@ import { TitleTab } from './TitleLayout/TitleTab' import { LeftSideTab } from './LeftSideLayout/LeftSideTab' import { ModelViewTab } from './modelViewTab' import { TitleColumnSub } from './TitleLayout/TitleColumnSub' -import { MainWindowInfo } from './AppStorageV2Class' +import { mwInfo } from './AppStorageV2Class' const DOMAIN = 0x0000; @Entry @ComponentV2 struct Index { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; @Local startX:number=0; @Local isDragging:boolean=false; - @Provider('panelWidth') panelWidth:number=this.mwInfo.mainWindowWidth * 0.15; + @Provider('panelWidth') panelWidth:number=mwInfo.mainWindowWidth * 0.15; build() { //OpenCAX主界面整体布局,采用多行布局 Column({ space: 0 }) { //头部导航功能区 TitleTab() - .height(this.mwInfo.mainWindowHeight * 0.1) - .borderRadius(5) + .height(mwInfo.mainWindowHeight * 0.08) //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) //工具栏 @@ -29,7 +27,7 @@ struct Index { TitleColumnSub(); } .width('100%') - .height(this.mwInfo.mainWindowHeight * 0.03) + .height(mwInfo.mainWindowHeight * 0.03) .align(Alignment.Start) //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) @@ -60,7 +58,7 @@ struct Index { }.layoutWeight(1) .align(Alignment.Center) }.width('100%') - .height(this.mwInfo.mainWindowHeight * 0.36) + .height(mwInfo.mainWindowHeight * 0.36) //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) ///状态栏 @@ -69,7 +67,7 @@ struct Index { }.width('100%') .align(Alignment.End) .alignItems(HorizontalAlign.Start) - .height(this.mwInfo.mainWindowHeight * 0.05) + .height(mwInfo.mainWindowHeight * 0.05) }.backgroundColor('#f3f3f0') .width('100%') .height('100%') diff --git a/entry/src/main/ets/pages/LeftSideLayout/LeftSideTab.ets b/entry/src/main/ets/pages/LeftSideLayout/LeftSideTab.ets index 2608c714..8316e4b8 100644 --- a/entry/src/main/ets/pages/LeftSideLayout/LeftSideTab.ets +++ b/entry/src/main/ets/pages/LeftSideLayout/LeftSideTab.ets @@ -1,15 +1,13 @@ import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface'; import {LeftSideBars} from '../LayoutInterface/Layout/LeftSideBar' -import { AppStorageV2 } from '@kit.ArkUI'; -import { MainWindowInfo } from '../AppStorageV2Class'; +import { mwInfo } from '../AppStorageV2Class'; import {LeftSideComponent} from './LeftSideComponent' @ComponentV2 export struct LeftSideTab { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; private leftSideBarTabs: TabsController = new TabsController(); @Local leftSideBarFocusIndex: number = 0; @Local isExpanded:boolean=true; - @Consumer('panelWidth') panelWidth:number=this.mwInfo.mainWindowWidth * 0.1; + @Consumer('panelWidth') panelWidth:number=mwInfo.mainWindowWidth * 0.1; build() { Row() { @@ -26,12 +24,12 @@ export struct LeftSideTab { }) .backgroundImage(this.isExpanded ? $r('app.media.base_expand_on'):$r('app.media.base_expand_off')) .type(ButtonType.Normal) - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) + .width(mwInfo.mainWindowWidth*0.013) + .height(mwInfo.mainWindowWidth*0.013) .onClick(()=>{ this.isExpanded = !this.isExpanded; if(this.isExpanded){ - this.panelWidth=this.mwInfo.mainWindowWidth * 0.1; + this.panelWidth=mwInfo.mainWindowWidth * 0.1; }else{ this.panelWidth=0; } @@ -52,8 +50,8 @@ export struct LeftSideTab { }) .backgroundImage($r('app.media.'+item.eIcon)) .fontWeight(index === this.leftSideBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) + .width(mwInfo.mainWindowWidth*0.013) + .height(mwInfo.mainWindowWidth*0.013) .type(ButtonType.Normal) .onClick(() => { this.leftSideBarTabs.changeIndex(index); @@ -67,8 +65,8 @@ export struct LeftSideTab { .align(Alignment.Start) .scrollable(ScrollDirection.Vertical) .scrollBar(BarState.Off) - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) + .width(mwInfo.mainWindowWidth*0.013) + .height(mwInfo.mainWindowWidth*0.013) .height('100%') }.borderWidth(1) .borderColor(Color.Grey) diff --git a/entry/src/main/ets/pages/TitleLayout/TitleColumnSub.ets b/entry/src/main/ets/pages/TitleLayout/TitleColumnSub.ets index 75a302b2..fdf763f5 100644 --- a/entry/src/main/ets/pages/TitleLayout/TitleColumnSub.ets +++ b/entry/src/main/ets/pages/TitleLayout/TitleColumnSub.ets @@ -4,36 +4,25 @@ import { ViewDialog } from "../CustomStyle/Dialog" import { SwitchView } from "../LayoutInterface/Layout/SwitchView"; import {SelectionMode} from "../LayoutInterface/Layout/SelectionMode" import {DisplayMode} from "../LayoutInterface/Layout/DisplayMode" -import { MenuBtn } from "../CustomStyle/Menu"; import { LayoutOption } from "../LayoutInterface/Layout/LayoutOption"; import { TitleData } from "../LayoutInterface/Layout/TabContent"; -import { MainWindowInfo } from "../AppStorageV2Class"; -import { AppStorageV2, font, Font } from "@kit.ArkUI"; +import { mwInfo } from "../AppStorageV2Class"; +import { SubColumnMenu } from "../CustomStyle/Button"; + @ComponentV2 export struct TitleColumnSub { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; @Local layerArray: Array = []; @Local dX:number=0; @Local dY:number=0; @Local viewDialog:CustomDialogController|undefined=undefined; - @Builder - DisplayModeMenu(menus: Array) { - Menu() { - ForEach(menus, (item: TitleButton, index: number) => { - MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) - .width('150') - .labelFont({size: 20}) - }) - } - } private ViewDialog(): CustomDialogController { return new CustomDialogController({ builder: ViewDialog(), // 确保 ViewDialog 组件已正确定义 - width: this.mwInfo.mainWindowWidth*0.04, - height: this.mwInfo.mainWindowWidth*0.04, + width: mwInfo.mainWindowWidth*0.04, + height: mwInfo.mainWindowWidth*0.04, borderWidth: 1, cornerRadius: 5, isModal: true, @@ -44,23 +33,10 @@ export struct TitleColumnSub { build(){ Row({space:5}){ - Button() - .padding(1) - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) - .backgroundColor(Color.Transparent) - .backgroundImage($r('app.media.base_shortcut_menu')) - .backgroundImagePosition({ x: '5%', y: '5%' }) - .backgroundImageSize({ - width: '90%', // 图片宽度占满按钮 - height: '90%' // 图片高度占满按钮 - }) - .bindMenu(this.DisplayModeMenu(TitleData.mFileModel.cmEvents as Array)) - .type(ButtonType.Normal) + SubColumnMenu({menus:TitleData.mFileModel.cmEvents as Array,icon:'base_shortcut_menu'}) .margin({ top:0, left: 5, bottom: 0, right: 0 }) Text('菜单') .fontSize(20) - .bindMenu(this.DisplayModeMenu(TitleData.mFileModel.cmEvents as Array)) Text('|') Text('拾取类型:') .fontSize(20) @@ -71,14 +47,7 @@ export struct TitleColumnSub { Text('图层:') .fontSize(20) TextInputComboBox({menu:this.layerArray}).width('10%') - Button() - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) - .padding(1) - .backgroundColor(Color.Transparent) - .backgroundImage($r('app.media.'+LayoutOption[0].eIcon)) - .backgroundImageSize({ width: '100%', height: '100%' }) - .bindMenu(this.DisplayModeMenu(LayoutOption)) + SubColumnMenu({menus:LayoutOption,icon:LayoutOption[0].eIcon}) //视角弹窗 Button().onClick((event) => { this.dX=event.windowX @@ -87,24 +56,15 @@ export struct TitleColumnSub { this.viewDialog=this.ViewDialog(); } this.viewDialog.open(); - }).width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) + }).width(mwInfo.mainWindowWidth*0.013) + .height(mwInfo.mainWindowWidth*0.013) .backgroundColor(Color.Transparent) .backgroundImage($r('app.media.' + SwitchView[0].eIcon)) .backgroundImageSize({ width: '100%', // 图片宽度占满按钮 height: '100%' // 图片高度占满按钮 }) - - Button() - .width(this.mwInfo.mainWindowWidth*0.013) - .height(this.mwInfo.mainWindowWidth*0.013) - .padding(1) - .backgroundColor(Color.Transparent) - .backgroundImage($r('app.media.'+DisplayMode[0].eIcon)) - .backgroundImageSize({ width: '100%', height: '100%' }) - .bindMenu(this.DisplayModeMenu(DisplayMode)) - + SubColumnMenu({menus:DisplayMode,icon:DisplayMode[0].eIcon}) }.margin({ top: 1, left: 1, bottom: 1, right: 1 }) } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/TitleLayout/TitleTab.ets b/entry/src/main/ets/pages/TitleLayout/TitleTab.ets index 7fe1b1a6..61e37380 100644 --- a/entry/src/main/ets/pages/TitleLayout/TitleTab.ets +++ b/entry/src/main/ets/pages/TitleLayout/TitleTab.ets @@ -8,13 +8,11 @@ import {TitleData, TitleModel} from '../LayoutInterface/Layout/TabContent' import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface' import { TitleGroup } from '../LayoutInterface/Interface/GroupInterface' import {TitleTabContent} from './TitleTabContent' -import { MainWindowInfo } from '../AppStorageV2Class'; -import { AppStorageV2, CommonModifier, TabTitleBar } from '@kit.ArkUI'; +import { mwInfo } from '../AppStorageV2Class'; @Entry @ComponentV2 export struct TitleTab { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; //顶部导航组件 private titleBarTabs: TabsController = new TabsController(); //当前的顶部导航选择页 @@ -29,11 +27,9 @@ export struct TitleTab { Menu() { ForEach(menus, (item: TitleButton, index: number) => { MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) - .width('auto') - .height('auto') - .labelFont({size: 20}) + .size({height: mwInfo.mainWindowWidth*0.02}) }) - } + }.fontSize(20) } build() { @@ -43,8 +39,8 @@ export struct TitleTab { Button(TitleData.mFileModel.cmName) .fontSize(16) .fontColor(Color.Black) - .height(this.mwInfo.mainWindowHeight*0.025) - .width(this.mwInfo.mainWindowWidth*0.035) + .height(mwInfo.mainWindowHeight*0.025) + .width(mwInfo.mainWindowWidth*0.035) .bindMenu(this.FileMenu(TitleData.mFileModel.cmEvents as Array)) .type(ButtonType.Normal) .backgroundColor('#f3f3f0') @@ -54,8 +50,8 @@ export struct TitleTab { .fontSize(16) .fontColor(Color.Black) .fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) - .height(this.mwInfo.mainWindowHeight*0.025) - .width(this.mwInfo.mainWindowWidth*0.035) + .height(mwInfo.mainWindowHeight*0.025) + .width(mwInfo.mainWindowWidth*0.035) .type(ButtonType.Normal) .backgroundColor('#f3f3f0') .onClick(() => { @@ -88,11 +84,11 @@ export struct TitleTab { ForEach(this.curtModel,(item:TitleModel, index: number)=>{ TabContent() { TitleTabContent({curtLayout:item}) - }.align(Alignment.Start) + } }) }.scrollable(true) .barHeight(0) .barMode(BarMode.Fixed) - }.width(this.mwInfo.mainWindowWidth) + }.width(mwInfo.mainWindowWidth) } } diff --git a/entry/src/main/ets/pages/TitleLayout/TitleTabContent.ets b/entry/src/main/ets/pages/TitleLayout/TitleTabContent.ets index 97a485e9..8219edce 100644 --- a/entry/src/main/ets/pages/TitleLayout/TitleTabContent.ets +++ b/entry/src/main/ets/pages/TitleLayout/TitleTabContent.ets @@ -1,15 +1,13 @@ import { hilog } from '@kit.PerformanceAnalysisKit'; import { TitleButton} from '../LayoutInterface/Interface/ButtonInterface'; import { TitleGroup} from '../LayoutInterface/Interface/GroupInterface'; -import {GroupTextEventMenu,MenuBtn} from '../CustomStyle/Menu' -import {EventBtn,SwitchModelBtn} from '../CustomStyle/Button' +import {GroupTextEventMenu} from '../CustomStyle/Menu' +import {EventBtn,MenuBtn} from '../CustomStyle/Button' import { TitleModel } from '../LayoutInterface/Layout/TabContent'; -import { MainWindowInfo } from '../AppStorageV2Class'; -import { AppStorageV2 } from '@kit.ArkUI'; +import { mwInfo } from '../AppStorageV2Class'; @ComponentV2 export struct TitleTabContent { - @Local mwInfo: MainWindowInfo = AppStorageV2.connect(MainWindowInfo, () => new MainWindowInfo())!; @Param curtLayout:TitleModel|undefined=undefined; @@ -27,14 +25,14 @@ export struct TitleTabContent { }else if(row_item instanceof Array){ //Array //功能组,迭代多个功能组 ForEach(row_item, (group_item: TitleGroup, index: number) =>{ - Column({ space: 7 }){ + Column({ space:10 }){ Row({ space: 1 }){ ForEach(group_item.grpBtn, (btn_item: TitleButton|Array, index: number) =>{ if(this.curtLayout?.cmName=='应用模块'){ if(Array.isArray(btn_item)){ MenuBtn({menuBtn:btn_item}) }else{ - SwitchModelBtn({eventBtn:btn_item}) + EventBtn({eventBtn:btn_item,eventBtnType:true}) } }else{ if(Array.isArray(btn_item)){ @@ -46,8 +44,11 @@ export struct TitleTabContent { }) }.margin({ top: 1,left:1,bottom:1,right:1}) //功能组名 - GroupTextEventMenu({grpEvent:group_item}) - }.height(this.mwInfo.mainWindowHeight*0.073) + Row(){ + GroupTextEventMenu({grpEvent:group_item}) + } + } + Divider().vertical(true).strokeWidth(1).lineCap(LineCapStyle.Round).height('95%').backgroundColor(Color.Gray) }) }else{