整理布局数据文件和Interface使得阅读方便

This commit is contained in:
JackLee 2026-03-05 21:44:00 +08:00
parent 6e51b8ba36
commit dca22581d7
21 changed files with 370 additions and 249 deletions

View File

@ -1,22 +1,44 @@
import { BtnEvent } from "../LayoutData/TitleInterface"; import { hilog } from '@kit.PerformanceAnalysisKit';
import { TitleButton } from "../LayoutInterface/Interface/TitleButtonInterface";
import { TitleModel} from "../LayoutInterface/Interface/TitleModelInterface";
import { TitleData } from '../LayoutInterface/Layout/TitleTabContent';
//单一功能按钮 //单一功能按钮
@ComponentV2 @ComponentV2
export struct EventButton { export struct EventBtn {
@Event btn:BtnEvent; @Param eventBtn:TitleButton|undefined=undefined;
@Param modelType:number|undefined=0;
@Consumer('curtModel') curtModel:Array<TitleModel>|undefined= TitleData.mModels.get(0)
build() { build() {
Column({ space: 2 }) { Column({ space: 2 }) {
// 请将$r('app.media.loading')替换为实际资源文件 if(this.eventBtn!=undefined){
Image($r('app.media.' + this.btn.eIcon)) if(this.modelType==1){
Image($r('app.media.' + this.eventBtn.eIcon))
.width(45) .width(45)
.height(35) .height(35)
.objectFit(ImageFit.Contain) .objectFit(ImageFit.Contain)
Text(this.btn.eName) .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)
}
})
}else{
Image($r('app.media.' + this.eventBtn.eIcon))
.width(45)
.height(35)
.objectFit(ImageFit.Contain)
}
Text(this.eventBtn.eName)
.fontSize(10) .fontSize(10)
.width(45) .width(45)
.height(10) .height(10)
.textAlign(TextAlign.Center) .textAlign(TextAlign.Center)
} }
}
.height('50') .height('50')
.width('50') .width('50')
.padding('1') .padding('1')
@ -26,12 +48,12 @@ export struct EventButton {
//菜单目录按钮 //菜单目录按钮
//功能目录菜单,主要用于针对单一按钮多个功能形式 //功能目录菜单,主要用于针对单一按钮多个功能形式
@ComponentV2 @ComponentV2
export struct EventBtnMenu { export struct MenuBtn {
@Event btnMenus: Array<BtnEvent>=[]; @Param menuBtn: Array<TitleButton>|undefined=undefined;
@Builder @Builder
EventMenu(_btnMenus:Array<BtnEvent>){ EventMenu(_btnMenus:Array<TitleButton>){
Menu() { Menu() {
ForEach(_btnMenus, (item: BtnEvent, index: number) => { ForEach(_btnMenus, (item: TitleButton, index: number) => {
MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName })
.width('150') .width('150')
.margin({ top: 0, left: 0, bottom: 0, right: 0 .margin({ top: 0, left: 0, bottom: 0, right: 0
@ -40,7 +62,9 @@ export struct EventBtnMenu {
} }
} }
build() { build() {
EventButton({btn:this.btnMenus[0]}).bindMenu(this.EventMenu(this.btnMenus)) if(this.menuBtn!=undefined){
EventBtn({eventBtn:this.menuBtn[0]}).bindMenu(this.EventMenu(this.menuBtn))
}
} }
} }

View File

@ -1,15 +1,15 @@
import { BaseMenu } from "../LayoutData/TitleInterface"; import { TitleMenu } from "../LayoutInterface/Interface/TitleMenuInterface";
import { TitleGroup } from "../LayoutInterface/Interface/TitleGroupInterface";
//菜单按钮 //菜单按钮
//主要用于功能组操作菜单.文件下拉菜单等. //主要用于功能组操作菜单.文件下拉菜单等.
@ComponentV2 @ComponentV2
export struct GroupTextEventMenu { export struct GroupTextEventMenu {
@Event grpName:string ='' @Param grpEvent:TitleGroup|undefined=undefined;
@Event grpMenus: Array<BaseMenu>=[];
@Builder @Builder
GroupMenu(menus: Array<BaseMenu>) { GroupMenu(menus: Array<TitleMenu>) {
ForEach(menus, (item: BaseMenu, index: number) => { ForEach(menus, (item: TitleMenu, index: number) => {
MenuItem({ startIcon: $r('app.media.'+item.icon), content: item.str }) MenuItem({ startIcon: $r('app.media.'+item.mIcon), content: item.mName })
.width('150') .width('150')
.margin({ top: 0, left: 0, bottom: 0, right: 0 .margin({ top: 0, left: 0, bottom: 0, right: 0
}) })
@ -17,9 +17,10 @@ export struct GroupTextEventMenu {
} }
build(){ build(){
Row(){ Row(){
if(this.grpEvent!=undefined){
//功能组名文本 //功能组名文本
Blank().width('auto') Blank().width('auto')
Text(this.grpName) Text(this.grpEvent.grpName)
.fontSize(8) .fontSize(8)
.fontColor(Color.Gray) .fontColor(Color.Gray)
Blank().width('auto') Blank().width('auto')
@ -27,8 +28,9 @@ export struct GroupTextEventMenu {
.height(15) .height(15)
.width(15) .width(15)
.padding(1) .padding(1)
.bindMenu(this.GroupMenu(this.grpMenus)) .bindMenu(this.GroupMenu(this.grpEvent.grpMenu))
.backgroundColor(Color.Transparent) .backgroundColor(Color.Transparent)
}
}.align(Alignment.BottomEnd) }.align(Alignment.BottomEnd)
} }
} }

View File

@ -1,63 +0,0 @@
export enum Model{
CAD,
CAM,
CAE,
BASE
};
//Button和Event绑定
export interface BtnEvent {
eModel:Array<Model>
eName:string
eNamed:string
eIcon:string
eTips:string
eEvent:string
}
//Menu
export interface Menu{
mName:string
mIcon:string
mTips:string
mEvent:string
}
//功能组
export interface GroupEvent{
//功能组名字
grpName:string;
//按钮列表
grpBtn:Array<BtnEvent|Array<BtnEvent>>
//功能组菜单
grpMenu:Array<BaseMenu>
}
export interface CAXModel{
//模块名
cmName:string
//模块路由页面
cmPage:string
//模块提示
cmTips:string
//模块布局数据
//第一个Array为TabContent的行数
//第二个Array为单行的按钮列表,该参数分为三种形态
//BtnEvent单按钮
//Array<GroupEvent>按钮组
//Array<BtnEvent>菜单按钮
cmEvents:Array<Array<BtnEvent|Array<GroupEvent>|Array<BtnEvent>>>|Array<BtnEvent>
}
//Title配置
export interface TitleConfig{
//Title配置ID名(唯一)
mId:string;
//基础模块
mFileModel:CAXModel
//功能模块
mModels:Map<number,Array<CAXModel>>
}
//菜单配置
export interface BaseMenu{
str:string
icon:string
tips:string
event:string
}

View File

@ -1,129 +0,0 @@
import {
BaseMenu,
Model,
TitleConfig ,
CAXModel,
GroupEvent,
Menu,
BtnEvent,
}from './TitleInterface'
export let GroupMenu:Array<BaseMenu>=[
{str:'增功能',icon:'',tips:"",event:''},
{str:'编辑组',icon:'',tips:"",event:''},
{str:'改图标',icon:'',tips:"",event:''},
{str:'重命名',icon:'',tips:"",event:''},
{str:'移动到',icon:'',tips:"",event:''}
]
export let RowMenu:Array<BaseMenu>=[
{str:'增加功能',icon:'',tips:"",event:''},
{str:'编辑功能组',icon:'',tips:"",event:''},
{str:'删除功能组',icon:'',tips:"",event:''},
{str:'移动功能组',icon:'',tips:"",event:''}
]
export let MatrixModel:CAXModel= {
cmName:"应用模块",cmPage:"",cmTips:"",cmEvents:[
[[{grpName:'模块矩阵',grpBtn:[
{eModel:[Model.BASE],eName:"建模",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:"Switch_Model_CAD"},
{eModel:[Model.BASE],eName:"加工",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:"Switch_Model_CAM"},
{eModel:[Model.BASE],eName:"仿真",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:"Switch_Model_CAE"},
],grpMenu:RowMenu}] as Array<GroupEvent>
]]
}
export let TitleData:TitleConfig= {
mId:"0",
mFileModel:
{cmName:"文件",cmPage:"",cmTips:"",cmEvents:[
{eModel:[Model.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"选项",eNamed:"",eIcon:"base_preferences",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"帮助",eNamed:"",eIcon:"base_help",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"退出",eNamed:"",eIcon:"base_exit",eTips:"",eEvent:""},
]},
mModels:new Map<number,Array<CAXModel>>([
[0,[
{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'文件功能组',grpBtn:[
{eModel:[Model.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[Model.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<BtnEvent>,
{eModel:[Model.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""},
],grpMenu:RowMenu}] as Array<GroupEvent>
]
]},MatrixModel]],
[1,[
{cmName:'建模',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[Model.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:RowMenu}] as Array<GroupEvent>
]
]},MatrixModel]],
[2,[
{cmName:'加工',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'文件功能组',grpBtn:[
{eModel:[Model.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[Model.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<BtnEvent>,
{eModel:[Model.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""},
],grpMenu:RowMenu}] as Array<GroupEvent>
]
]},MatrixModel]],
[3,[
{cmName:'仿真',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'文件功能组',grpBtn:[
{eModel:[Model.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[Model.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<BtnEvent>,
{eModel:[Model.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[Model.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""},
],grpMenu:RowMenu}] as Array<GroupEvent>
]
]},MatrixModel]]
])
}
export { TitleConfig, CAXModel }

View File

@ -0,0 +1,10 @@
import { TitleModelType } from "../Layout/TitleModelType"
export interface TitleButton {
eModel:Array<TitleModelType>
eName:string
eNamed:string
eIcon:string
eTips:string
eEvent:string
}

View File

@ -0,0 +1,12 @@
import { TitleMenu } from "./TitleMenuInterface";
import { TitleButton } from "./TitleButtonInterface";
//功能组
export interface TitleGroup{
//功能组名字
grpName:string;
//按钮列表
grpBtn:Array<TitleButton|Array<TitleButton>>
//功能组菜单
grpMenu:Array<TitleMenu>
}

View File

@ -0,0 +1,11 @@
import { TitleModel } from "./TitleModelInterface";
//Title配置
export interface TitleInterface{
//Title配置ID名(唯一)
mId:string;
//基础模块
mFileModel:TitleModel
//功能模块
mModels:Map<number,Array<TitleModel>>
}

View File

@ -0,0 +1,6 @@
export interface TitleMenu{
mName:string
mIcon:string
mTips:string
mEvent:string
}

View File

@ -0,0 +1,18 @@
import { TitleButton } from "./TitleButtonInterface"
import { TitleGroup } from "./TitleGroupInterface"
export interface TitleModel{
//模块名
cmName:string
//模块路由页面
cmPage:string
//模块提示
cmTips:string
//模块布局数据
//第一个Array为TabContent的行数
//第二个Array为单行的按钮列表,该参数分为三种形态
//BtnEvent单按钮
//Array<GroupEvent>按钮组
//Array<BtnEvent>菜单按钮
cmEvents:Array<Array<TitleButton|Array<TitleGroup>|Array<TitleButton>>>|Array<TitleButton>
}

View File

@ -0,0 +1,15 @@
import { TitleModel } from "../Interface/TitleModelInterface";
import { TitleModelType } from "./TitleModelType";
//文件Bar->Menus
export let TitleFileMenuModel:TitleModel={cmName:"文件",cmPage:"",cmTips:"",cmEvents:[
{eModel:[TitleModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_preferences",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"退出",eNamed:"",eIcon:"base_exit",eTips:"",eEvent:""},
]}

View File

@ -0,0 +1,9 @@
import { TitleMenu } from "../Interface/TitleMenuInterface";
export let GroupMenu:Array<TitleMenu>=[
{mName:'增功能',mIcon:'',mTips:"",mEvent:''},
{mName:'编辑组',mIcon:'',mTips:"",mEvent:''},
{mName:'改图标',mIcon:'',mTips:"",mEvent:''},
{mName:'重命名',mIcon:'',mTips:"",mEvent:''},
{mName:'移动到',mIcon:'',mTips:"",mEvent:''}
]

View File

@ -0,0 +1,21 @@
import { TitleButton } from "../Interface/TitleButtonInterface";
import { TitleGroup } from "../Interface/TitleGroupInterface";
import { TitleModelType } from "./TitleModelType";
import { TitleRowMenu } from "./TitleRowMenu";
//主页Bar
export let MainPageModel:Array<TitleGroup>=
[{grpName:'文件功能组',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[TitleModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<TitleButton>,
{eModel:[TitleModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""},
],grpMenu:TitleRowMenu}] as Array<TitleGroup>

View File

@ -0,0 +1,14 @@
import { TitleGroup } from '../Interface/TitleGroupInterface'
import {TitleModel} from '../Interface/TitleModelInterface'
import { TitleRowMenu } from './TitleRowMenu'
import { TitleModelType } from './TitleModelType'
export let MatrixModel:TitleModel= {
cmName:"应用模块",cmPage:"",cmTips:"",cmEvents:[
[[{grpName:'模块矩阵',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"建模",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:"Switch_Model_CAD"},
{eModel:[TitleModelType.BASE],eName:"加工",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:"Switch_Model_CAM"},
{eModel:[TitleModelType.BASE],eName:"仿真",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:"Switch_Model_CAE"},
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]]
}

View File

@ -0,0 +1,6 @@
export enum TitleModelType{
CAD,
CAM,
CAE,
BASE
};

View File

@ -0,0 +1,8 @@
import { TitleMenu } from "../Interface/TitleMenuInterface";
export let TitleRowMenu:Array<TitleMenu>=[
{mName:'增加功能',mIcon:'',mTips:"",mEvent:''},
{mName:'编辑功能组',mIcon:'',mTips:"",mEvent:''},
{mName:'删除功能组',mIcon:'',mTips:"",mEvent:''},
{mName:'移动功能组',mIcon:'',mTips:"",mEvent:''}
]

View File

@ -0,0 +1,150 @@
import { TitleFileMenuModel } from './TitleFileModel'
import { TitleInterface } from '../Interface/TitleInterface'
import { TitleModel } from '../Interface/TitleModelInterface'
import { MainPageModel } from './TitleMainPage'
import { MatrixModel } from './TitleMatrixModel'
import { TitleModelType } from './TitleModelType'
import { TitleGroup } from '../Interface/TitleGroupInterface'
import { TitleRowMenu } from './TitleRowMenu'
import { TitleButton } from '../Interface/TitleButtonInterface'
export let TitleData:TitleInterface= {
mId:"0",
mFileModel:TitleFileMenuModel,
mModels:new Map<number,Array<TitleModel>>([
[0,[{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[MainPageModel]]},MatrixModel]],
[1,[{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[MainPageModel]]},
{cmName:'建模',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'曲面',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'曲线',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'同步建模',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'分析',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'显示',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},
{cmName:'首选项',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'基础模型',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},MatrixModel]],
[2,[{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[MainPageModel]]},
{cmName:'加工',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'加工环境',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"重置环境",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"工艺",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[TitleModelType.BASE],eName:"切削参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"切削速度",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"主轴参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<TitleButton>,
{eModel:[TitleModelType.BASE],eName:"显示刀路",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"新建工序",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"新建刀具",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},MatrixModel]],
[3,[{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[MainPageModel]]},
{cmName:'仿真',cmPage:'',cmTips:'',cmEvents: [
//数组表示非单个BtnEvent
[
//数组成员区别是GroupEvent还是BtnEvent
[{grpName:'初始化仿真',grpBtn:[
{eModel:[TitleModelType.BASE],eName:"导入模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"导出模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"设定仿真环境",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
[
{eModel:[TitleModelType.BASE],eName:"环境参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"力学参数",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"化学参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""},
] as Array<TitleButton>,
{eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""},
{eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""},
],grpMenu:TitleRowMenu}] as Array<TitleGroup>
]
]},MatrixModel]]
])
}
export { TitleInterface, TitleModel }

View File

@ -4,8 +4,9 @@ import { AddFormMenuItem } from '@ohos.arkui.advanced.FormMenu';
import { SceneResourceType } from '@kit.ArkGraphics3D'; import { SceneResourceType } from '@kit.ArkGraphics3D';
//导入布局模块 //导入布局模块
import {TitleData,TitleConfig,CAXModel} from '../LayoutData/TitleLayoutData' import {TitleData, TitleModel} from '../LayoutInterface/Layout/TitleTabContent'
import { BtnEvent, GroupEvent } from '../LayoutData/TitleInterface' import { TitleButton } from '../LayoutInterface/Interface/TitleButtonInterface'
import { TitleGroup } from '../LayoutInterface/Interface/TitleGroupInterface'
import {TitleTabContent} from './TitleTabContent' import {TitleTabContent} from './TitleTabContent'
@ComponentV2 @ComponentV2
@ -14,13 +15,14 @@ export struct TitleTab {
private titleBarTabs: TabsController = new TabsController(); private titleBarTabs: TabsController = new TabsController();
//当前的顶部导航选择页 //当前的顶部导航选择页
@Local titleBarFocusIndex: number = 0; @Local titleBarFocusIndex: number = 0;
//TabBar默认焦点
@Local titleBarDefaultFocusIndex: number = 0; @Local titleBarDefaultFocusIndex: number = 0;
@Local currentModel:Array<CAXModel>|undefined= TitleData.mModels.get(0) //模块Bar栏
@Provider('curtModel') curtModel:Array<TitleModel>|undefined= TitleData.mModels.get(0)
@Builder @Builder
FileMenu(menus: Array<BtnEvent>) { FileMenu(menus: Array<TitleButton>) {
Menu() { Menu() {
ForEach(menus, (item: BtnEvent, index: number) => { ForEach(menus, (item: TitleButton, index: number) => {
MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName })
.width('150') .width('150')
.margin({ .margin({
@ -40,10 +42,10 @@ export struct TitleTab {
.height(25) .height(25)
.width(60) .width(60)
.padding(5) .padding(5)
.bindMenu(this.FileMenu(TitleData.mFileModel.cmEvents as Array<BtnEvent>)) .bindMenu(this.FileMenu(TitleData.mFileModel.cmEvents as Array<TitleButton>))
.type(ButtonType.Normal) .type(ButtonType.Normal)
.backgroundColor(Color.Brown) .backgroundColor(Color.Brown)
ForEach(this.currentModel, (item: CAXModel, index: number) => { ForEach(this.curtModel, (item: TitleModel, index: number) => {
Button(item.cmName) Button(item.cmName)
.fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) .fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal)
.height(25) .height(25)
@ -54,7 +56,7 @@ export struct TitleTab {
.onClick(() => { .onClick(() => {
this.titleBarTabs.changeIndex(index); this.titleBarTabs.changeIndex(index);
this.titleBarFocusIndex = index; this.titleBarFocusIndex = index;
this.currentModel=TitleData.mModels.get(index); //this.currentModel=TitleData.mModels.get(index);
}) })
}) })
} }
@ -65,9 +67,9 @@ export struct TitleTab {
.margin({ top: 2,left:2,bottom:2,right:2}) .margin({ top: 2,left:2,bottom:2,right:2})
.width('100%') .width('100%')
Tabs({barPosition: BarPosition.Start, index: this.titleBarDefaultFocusIndex,controller: this.titleBarTabs}){ Tabs({barPosition: BarPosition.Start, index: this.titleBarDefaultFocusIndex,controller: this.titleBarTabs}){
ForEach(this.currentModel,(item:CAXModel, index: number)=>{ ForEach(this.curtModel,(item:TitleModel, index: number)=>{
TabContent() { TabContent() {
TitleTabContent({tabLayout:item.cmEvents as Array<Array<BtnEvent|Array<GroupEvent>|Array<BtnEvent>>>}) TitleTabContent({tabLayout:item.cmEvents as Array<Array<TitleButton|Array<TitleGroup>|Array<TitleButton>>>})
}.align(Alignment.Start) }.align(Alignment.Start)
.padding(1) .padding(1)
.margin({ top: 0,left:0,bottom:2,right:0}) .margin({ top: 0,left:0,bottom:2,right:0})

View File

@ -1,47 +1,52 @@
import { hilog } from '@kit.PerformanceAnalysisKit'; import { hilog } from '@kit.PerformanceAnalysisKit';
import { BaseMenu, BtnEvent, GroupEvent } from '../LayoutData/TitleInterface'; import { TitleButton} from '../LayoutInterface/Interface/TitleButtonInterface';
import { TitleGroup} from '../LayoutInterface/Interface/TitleGroupInterface';
import {GroupTextEventMenu} from '../CustomStyle/StyleMenu' import {GroupTextEventMenu} from '../CustomStyle/StyleMenu'
import {EventButton,EventBtnMenu} from '../CustomStyle/StyleButton' import {EventBtn,MenuBtn} from '../CustomStyle/StyleButton'
@ComponentV2 @ComponentV2
export struct TitleTabContent { export struct TitleTabContent {
@Param tabLayout:Array<Array<BtnEvent|Array<GroupEvent>|Array<BtnEvent>>>=[]; @Param tabLayout:Array<Array<TitleButton|Array<TitleGroup>|Array<TitleButton>>>=[];
build() { build() {
//垂直布局展示多行 //垂直布局展示多行
Column({ space: 0 }) { Column({ space: 0 }) {
//迭代生成行容器 //迭代生成行容器
ForEach(this.tabLayout, (row_items: Array<BtnEvent|Array<GroupEvent>|Array<BtnEvent>>, index: number) => { ForEach(this.tabLayout, (row_items: Array<TitleButton|Array<TitleGroup>|Array<TitleButton>>, mIndex: number) => {
//行的按钮组容器 //行的按钮组容器
Row(){ Row(){
ForEach(row_items, (row_item: BtnEvent|Array<GroupEvent>|Array<BtnEvent>, index: number) => { ForEach(row_items, (row_item: TitleButton|Array<TitleGroup>|Array<TitleButton>, index: number) => {
//首先判断是否为数组.如果不为数组者为BtnEvent //首先判断是否为数组.如果不为数组者为BtnEvent
if(!Array.isArray(row_item)){ if(!Array.isArray(row_item)){
//单按钮 //单按钮
EventButton({btn:row_item}) EventBtn({eventBtn:row_item})
}else if(row_item instanceof Array<GroupEvent>){ }else if(row_item instanceof Array<TitleGroup>){
//功能组,迭代多个功能组 //功能组,迭代多个功能组
ForEach(row_item, (group_item: GroupEvent, index: number) =>{ ForEach(row_item, (group_item: TitleGroup, index: number) =>{
Column({ space: 5 }){ Column({ space: 5 }){
Row({ space: 1 }){ Row({ space: 1 }){
ForEach(group_item.grpBtn, (btn_item: BtnEvent|Array<BtnEvent>, index: number) =>{ ForEach(group_item.grpBtn, (btn_item: TitleButton|Array<TitleButton>, index: number) =>{
//如果是数组则为菜单按钮否则为单功能按钮 //如果是数组则为菜单按钮否则为单功能按钮
if(Array.isArray(btn_item)){ if(Array.isArray(btn_item)){
EventBtnMenu({btnMenus:btn_item}) MenuBtn({menuBtn:btn_item})
}else{ }else{
EventButton({btn:btn_item}) //针对最后一个Bar特化处理.如果为最后一个Bar则在子组件Image真假onClick事件
if(mIndex==this.tabLayout.length-1){
EventBtn({eventBtn:btn_item,modelType:1})
}else{
EventBtn({eventBtn:btn_item})
}
} }
}) })
}.margin({ top: 1,left:1,bottom:1,right:1}) }.margin({ top: 1,left:1,bottom:1,right:1})
//功能组名 //功能组名
GroupTextEventMenu({grpName:group_item.grpName,grpMenus:group_item.grpMenu}) GroupTextEventMenu({grpEvent:group_item})
}.borderWidth(1) }.borderWidth(1)
.borderColor(Color.Grey) .borderColor(Color.Grey)
}) })
}else{ }else{
//菜单按钮 //菜单按钮
Column(){ Column(){
Button((row_item as Array<BtnEvent>)[0].eName) Button((row_item as Array<TitleButton>)[0].eName)
.height('95%') .height('95%')
.width('50') .width('50')
.padding('1') .padding('1')