import { hilog } from '@kit.PerformanceAnalysisKit'; import { TitleTab } from './titletabs/TitleTab' import { LeftSideTab } from './leftside/LeftSideTab' import { RightSideTab } from './rightside/RightSideTab' import { View } from './view/View' import { TitleColumnSub } from './titletabs/TitleColumnSub' import { mdwInfo } from './dispwininfo/DispWinInfo' import { uiMode } from './eventhub/EventBase' const DOMAIN = 0x0000; //分割线类型,分左和右 enum DividerType{ LeftSide, RightSide } @Entry @ComponentV2 struct Index { @Local startX:number=0; @Local isDragging:boolean=false; @Provider('LeftSideWidth') leftSideWidth:number=mdwInfo.winWidth * 0.1; @Provider('RightSideWidth') rightSideWidth:number=mdwInfo.winHeight * 0.1; //利用分割线拖动改变区域容器大小.鼠标和触控整合 dividerChangeSize(event:MouseEvent|TouchEvent,dividerType:DividerType){ let screenX: number; //鼠标事件 if((event as MouseEvent)){ const mouseEvent = event as MouseEvent; //左边分割线 if(dividerType==DividerType.LeftSide){ if(mouseEvent.button==MouseButton.Left&&mouseEvent.action==MouseAction.Press){ this.startX = mouseEvent.windowX; // 记录起始坐标 this.isDragging = true; }else if(mouseEvent.action==MouseAction.Move&&this.isDragging){ // 计算新的宽度 let newWidth = this.leftSideWidth + (mouseEvent.windowX - this.startX); // 添加最小宽度限制 newWidth = Math.max(newWidth, 0); this.leftSideWidth = newWidth; // 更新起始坐标,实现连续拖动 this.startX = mouseEvent.windowX; }else if(mouseEvent.action==MouseAction.Release){ this.isDragging = false; } } else if(dividerType==DividerType.RightSide) //右分割线 { if(mouseEvent.button==MouseButton.Left&&mouseEvent.action==MouseAction.Press){ this.startX = mouseEvent.windowX; // 记录起始坐标 this.isDragging = true; }else if(mouseEvent.action==MouseAction.Move&&this.isDragging){ // 计算新的宽度 let newWidth = this.rightSideWidth - (mouseEvent.windowX - this.startX); // 添加最小宽度限制 newWidth = Math.max(newWidth, 0); this.rightSideWidth = newWidth; // 更新起始坐标,实现连续拖动 this.startX = mouseEvent.windowX; }else if(mouseEvent.action==MouseAction.Release){ this.isDragging = false; } } } } build() { Stack({ alignContent: Alignment.Top }) { //OpenCAX主界面整体布局,采用多行布局 Column() { //头部导航功能区 Blank().height(uiMode.state?'15%':'0%') //TitleTab().height('15%') //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) //工具栏 Row() { TitleColumnSub() }.height('4%') .align(Alignment.Start) //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) Row() { //左侧边导航区 LeftSideTab().width(uiMode.state?this.leftSideWidth:'0%') // 左拖拽手柄 Divider().vertical(true).strokeWidth(3).lineCap(LineCapStyle.Round).height('100%').backgroundColor(Color.Grey) .onMouse((event) => { this.dividerChangeSize(event,DividerType.LeftSide) }) .onTouch((event) => { this.dividerChangeSize(event,DividerType.LeftSide) }) //中间操作区域 Row() { View() }.layoutWeight(1) .align(Alignment.Center) //右拖拽手柄 Divider().vertical(true).strokeWidth(3).lineCap(LineCapStyle.Round).height('100%').backgroundColor(Color.Grey) .onMouse((event) => { this.dividerChangeSize(event,DividerType.RightSide) }) .onTouch((event) => { this.dividerChangeSize(event,DividerType.RightSide) }) //右侧边导航区 RightSideTab().width(uiMode.state?this.rightSideWidth:'0%') }.height(uiMode.state?'77%':'92%') //分割线 Divider().vertical(false).strokeWidth(1).lineCap(LineCapStyle.Round).width('100%').backgroundColor(Color.Grey) ///状态栏 Column() { Text('状态栏').fontSize(16) }.width('100%') .align(Alignment.End) .alignItems(HorizontalAlign.Start) .justifyContent(FlexAlign.Center) .height('4%') } TitleTab() .height(uiMode.state?'15%':'0%') .backgroundColor(Color.Transparent) .backgroundBlurStyle(BlurStyle.Thin, { colorMode: ThemeColorMode.LIGHT, adaptiveColor: AdaptiveColor.DEFAULT, scale: 1.0 }) }.width('100%') .height('100%') .backgroundColor(Color.Transparent) .backgroundBlurStyle(BlurStyle.Thin, { colorMode: ThemeColorMode.LIGHT, adaptiveColor: AdaptiveColor.DEFAULT, scale: 1.0 }) } }