diff --git a/entry/src/main/ets/pages/CustomStyle/StyleButton.ets b/entry/src/main/ets/pages/CustomStyle/StyleButton.ets new file mode 100644 index 00000000..ea3e6e48 --- /dev/null +++ b/entry/src/main/ets/pages/CustomStyle/StyleButton.ets @@ -0,0 +1,47 @@ +import { BtnEvent } from "../LayoutData/TitleInterface"; + +//单一功能按钮 +@ComponentV2 +export struct EventButton { + @Param strIcon:string=''; + @Param strName:string=''; + build() { + Column({ space: 0 }) { + // 请将$r('app.media.loading')替换为实际资源文件 + Image($r('app.media.' + this.strIcon)) + .width(50) + .height(40) + .objectFit(ImageFit.Contain) + Text(this.strName) + .fontSize(12) + .width(50) + .height(10) + .textAlign(TextAlign.Center) + } + .height('50') + .width('50') + .padding('1') + } +} + +//菜单目录按钮 +//功能目录菜单,主要用于针对单一按钮多个功能形式 +@ComponentV2 +export struct EventBtnMenu { + @Param btnMenus: Array=[]; + @Builder + EventMenu(_btnMenus:Array){ + Menu() { + ForEach(_btnMenus, (item: BtnEvent, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) + .width('150') + .margin({ top: 0, left: 0, bottom: 0, right: 0 + }) + }) + } + } + build() { + EventButton({strIcon:this.btnMenus[0].eIcon,strName:this.btnMenus[0].eName}).bindMenu(this.EventMenu(this.btnMenus)) + } +} + diff --git a/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets b/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets new file mode 100644 index 00000000..988a2a37 --- /dev/null +++ b/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets @@ -0,0 +1,36 @@ +import { BaseMenu } from "../LayoutData/TitleInterface"; + +//菜单按钮 +//主要用于功能组操作菜单.文件下拉菜单等. +@ComponentV2 +export struct GroupTextEventMenu { + @Param grpName:string ='' + @Param grpMenus: Array=[]; + @Builder + GroupMenu(menus: Array) { + ForEach(menus, (item: BaseMenu, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.icon), content: item.str }) + .width('150') + .margin({ top: 0, left: 0, bottom: 0, right: 0 + }) + }) + } + build(){ + Row(){ + //功能组名文本 + Text(this.grpName) + .fontSize(8) + .fontColor(Color.Gray) + Button('X') + .fontColor(Color.Gray) + .fontSize(8) + .height(12) + .width(8) + .padding(1) + .type(ButtonType.Normal) + .bindMenu(this.GroupMenu(this.grpMenus)) + .backgroundColor(Color.Transparent) + }.align(Alignment.BottomEnd) + } +} + diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index a66113ba..bf1bedf2 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -1,6 +1,6 @@ import { hilog } from '@kit.PerformanceAnalysisKit'; import { edgeColors } from '@kit.ArkUI'; -import {TitleTab} from './titleTab' +import {TitleTab} from './TitleTab/TitleTab' import {LeftSideTab} from './leftSideTab' import {ModelViewTab} from './modelViewTab' const DOMAIN = 0x0000; diff --git a/entry/src/main/ets/pages/LayoutData/TitleInterface.ets b/entry/src/main/ets/pages/LayoutData/TitleInterface.ets new file mode 100644 index 00000000..a6af9c86 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutData/TitleInterface.ets @@ -0,0 +1,62 @@ +export enum Model{ + CAD, + CAM, + CAE, + BASE +}; +//Button和Event绑定 +export interface BtnEvent { + eModel:Array + 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> + //功能组菜单 + grpMenu:Array +} +export interface CAXModel{ + //模块名 + cmName:string + //模块路由页面 + cmPage:string + //模块提示 + cmTips:string + //菜单列表 + cmBtnEvents:Array + //模块布局数据 + //第一个Array为TabContent的行数 + //第二个Array为单行的按钮列表,该参数分为三种形态 + //BtnEvent单按钮 + //Array按钮组 + //Array菜单按钮 + cmEvents:Array|Array>> +} +//Title配置 +export interface TitleConfig{ + //Title配置ID名(唯一) + mId:string; + //功能模块 + mModel:Array +} +//菜单配置 +export interface BaseMenu{ + str:string + icon:string + tips:string + event:string +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutData/TitleLayoutData.ets b/entry/src/main/ets/pages/LayoutData/TitleLayoutData.ets new file mode 100644 index 00000000..7e0fe8c9 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutData/TitleLayoutData.ets @@ -0,0 +1,77 @@ +import { + BaseMenu, + Model, + TitleConfig , + CAXModel, + GroupEvent, + Menu, + BtnEvent +}from './TitleInterface' + +export let GroupMenu:Array=[ + {str:'增功能',icon:'',tips:"",event:''}, + {str:'编辑组',icon:'',tips:"",event:''}, + {str:'改图标',icon:'',tips:"",event:''}, + {str:'重命名',icon:'',tips:"",event:''}, + {str:'移动到',icon:'',tips:"",event:''} +] +export let RowMenu:Array=[ + {str:'增加功能',icon:'',tips:"",event:''}, + {str:'编辑功能组',icon:'',tips:"",event:''}, + {str:'删除功能组',icon:'',tips:"",event:''}, + {str:'移动功能组',icon:'',tips:"",event:''} +] +export let TitleData:TitleConfig= { + mId:"0", + mModel:[ + //模块一 + {cmName:"文件",cmPage:"",cmTips:"",cmBtnEvents:[ + {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:""}, + ],cmEvents:[]}, + //模块二 + {cmName:"主页",cmPage:"",cmTips:"",cmBtnEvents:[],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, + {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 + ] + ]}, + {cmName:"建模",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"曲线",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"曲面",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"装配",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"多边建模",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"分析",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"选择",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"显示",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"工具",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"应用模块",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"关于",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]}, + {cmName:"调试",cmPage:"",cmTips:"",cmBtnEvents:[],cmEvents:[]} + ] +} + +export { TitleConfig, CAXModel } diff --git a/entry/src/main/ets/pages/TitleTab/TitleTab.ets b/entry/src/main/ets/pages/TitleTab/TitleTab.ets new file mode 100644 index 00000000..cc6f7883 --- /dev/null +++ b/entry/src/main/ets/pages/TitleTab/TitleTab.ets @@ -0,0 +1,93 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { ArrayList } from '@kit.ArkTS'; +import { AddFormMenuItem } from '@ohos.arkui.advanced.FormMenu'; +import { SceneResourceType } from '@kit.ArkGraphics3D'; + +//导入布局模块 +import {TitleData,TitleConfig,CAXModel} from '../LayoutData/TitleLayoutData' +import { BtnEvent } from '../LayoutData/TitleInterface' +import {TitleTabContent} from './TitleTabContent' + +@Component +export struct TitleTab { + //顶部导航组件 + private titleBarTabs: TabsController = new TabsController(); + //当前的顶部导航选择页 + @State titleBarFocusIndex: number = 1; + @State titleBarDefaultFocusIndex: number = 1; + @Builder + FileMenu(menus: Array) { + Menu() { + ForEach(menus, (item: BtnEvent, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) + .width('150') + .margin({ + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + }) + } + } + build() { + Flex({ direction: FlexDirection.Column }){ + Scroll() { + Row() { + ForEach(TitleData.mModel, (item: CAXModel, index: number) => { + Row({ space: 1 }) { + if(index>0){ + Button(item.cmName) + .fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) + .height(25) + .width(60) + .padding(5) + .type(ButtonType.Normal) + .backgroundColor(Color.Brown) + }else{ + Button(item.cmName) + .fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) + .height(25) + .width(60) + .padding(5) + .bindMenu(this.FileMenu(item.cmBtnEvents)) + .type(ButtonType.Normal) + .backgroundColor(Color.Brown) + } + + }.onClick(() => { + if(index!=0){ + this.titleBarTabs.changeIndex(index); + this.titleBarFocusIndex = index; + }else{ + this.titleBarTabs.changeIndex(this.titleBarDefaultFocusIndex); + this.titleBarFocusIndex = this.titleBarDefaultFocusIndex; + } + }) + }) + } + } + .align(Alignment.Start) + .scrollable(ScrollDirection.Horizontal) + .scrollBar(BarState.Off) + .margin({ top: 2,left:2,bottom:2,right:2}) + .width('100%') + Tabs({barPosition: BarPosition.Start, index: this.titleBarDefaultFocusIndex,controller: this.titleBarTabs}){ + ForEach(TitleData.mModel,(item:CAXModel, index: number)=>{ + TabContent() { + if(item.cmBtnEvents.length==0){ + TitleTabContent({tabLayout:item.cmEvents}) + } + }.align(Alignment.Start) + .padding(1) + .margin({ top: 0,left:0,bottom:2,right:0}) + }) + }.scrollable(false) + .barHeight(0) + .margin({ top: 0,left:0,bottom:0,right:0}) + .height('auto') + .barMode(BarMode.Fixed) + }.borderWidth('1') + .height('auto') + } +} diff --git a/entry/src/main/ets/pages/TitleTab/TitleTabContent.ets b/entry/src/main/ets/pages/TitleTab/TitleTabContent.ets new file mode 100644 index 00000000..3c06e229 --- /dev/null +++ b/entry/src/main/ets/pages/TitleTab/TitleTabContent.ets @@ -0,0 +1,65 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BaseMenu, BtnEvent, GroupEvent } from '../LayoutData/TitleInterface'; +import {GroupTextEventMenu} from '../CustomStyle/StyleMenu' +import {EventButton,EventBtnMenu} from '../CustomStyle/StyleButton' + + +@ComponentV2 +export struct TitleTabContent { + @Param tabLayout:Array|Array>>=[]; + build() { + //垂直布局展示多行 + Column({ space: 0 }) { + //迭代生成行容器 + ForEach(this.tabLayout, (row_items: Array|Array>, index: number) => { + //行的按钮组容器 + Row(){ + ForEach(row_items, (row_item: BtnEvent|Array|Array, index: number) => { + //首先判断是否为数组.如果不为数组者为BtnEvent + if(!Array.isArray(row_item)){ + //单按钮 + EventButton({strIcon:row_item.eIcon,strName:row_item.eName}) + }else if(row_item instanceof Array){ + //功能组,迭代多个功能组 + ForEach(row_item, (group_item: GroupEvent, index: number) =>{ + Column({ space: 2 }){ + Row({ space: 1 }){ + ForEach(group_item.grpBtn, (btn_item: BtnEvent|Array, index: number) =>{ + //如果是数组则为菜单按钮否则为单功能按钮 + if(Array.isArray(btn_item)){ + EventBtnMenu({btnMenus:btn_item}) + }else{ + EventButton({strIcon:btn_item.eIcon,strName:btn_item.eName}) + } + }) + }.margin({ top: 1,left:1,bottom:1,right:1}) + //功能组名 + GroupTextEventMenu({grpName:group_item.grpName,grpMenus:group_item.grpMenu}) + }.borderWidth(1) + .borderColor(Color.Grey) + }) + }else{ + //菜单按钮 + Column(){ + Button((row_item as Array)[0].eName) + .height('95%') + .width('50') + .padding('1') + .type(ButtonType.Normal) + Button() + .height('5%') + .width('50') + .padding('1') + .type(ButtonType.Normal) + //.bindMenu(this.BtnMenu((row_item as Array))) + } + } + }) + } + .width('100%') + .align(Alignment.BottomEnd) + .borderColor(Color.Gray) + }) + }.margin({ top: 1,left:1,bottom:1,right:1}) + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/rowBtnTab.ets b/entry/src/main/ets/pages/rowBtnTab.ets deleted file mode 100644 index 5e4e0ff4..00000000 --- a/entry/src/main/ets/pages/rowBtnTab.ets +++ /dev/null @@ -1,162 +0,0 @@ -import { hilog } from '@kit.PerformanceAnalysisKit'; - -export class ToolButton{ - //功能 - str:string=''; - //图标 - icon:string=''; - //按钮提示 - tips:string=''; - //事件 - event:string=''; -} - -export class RowBtn{ - str:string='' - btnGroup:Array>=new Array> -} - -class XMenu{ - str:string='' - icon:string='' - event:string='' -} - -let groupMenu:Array=[ - {str:'增功能',icon:'',event:''}, - {str:'编辑组',icon:'',event:''}, - {str:'改图标',icon:'',event:''}, - {str:'重命名',icon:'',event:''}, - {str:'移动到->',icon:'',event:''} -] -let rowMenu:Array=[ - {str:'增加功能组',icon:'',event:''}, - {str:'编辑功能组',icon:'',event:''}, - {str:'修改功能组',icon:'',event:''}, - {str:'命名功能组',icon:'',event:''}, - {str:'移动功能组',icon:'',event:''} -] -@ComponentV2 -export struct RowBtnTab { - @Param rowsBtn: Array> = new Array>; - @Param rightBtn: Array> = new Array>; - @Builder - ToolsMenu(menus: Array) { - Menu() { - ForEach(menus, (item: ToolButton, index: number) => { - MenuItem({ startIcon: $r('app.media.startIcon'), content: item.str }) - .width('150') - .margin({ - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - }) - } - } - @Builder - TButton(strIcon: string, strName: string) { - Column() { - // 请将$r('app.media.loading')替换为实际资源文件 - Image($r('app.media.startIcon')) - .width(50) - .height(40) - .objectFit(ImageFit.Contain) - Text(strName) - .fontSize(12) - .width(50) - .height(10) - .textAlign(TextAlign.Center) - } - .height('50') - .width('50') - .padding('1') - } - @Builder - XMenu(menus: Array) { - Menu() { - ForEach(menus, (item: ToolButton, index: number) => { - MenuItem({ startIcon: $r('app.media.startIcon'), content: item.str }) - .width('150') - .margin({ - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - }) - } - } - build() { - //垂直布局展示多行 - Column({ space: 0 }) { - //迭代生成行容器 - ForEach(this.rowsBtn, (rowBtn: Array>, index: number) => { - //行的按钮组容器 - Row(){ - ForEach(rowBtn, (rowGroup: RowBtn, index: number) => { - Row(){ - Column({ space: 5 }) { - //Group的按钮组 - Column({ space: 1 }) { - //每个Group和非Group的横向布局 - Row() { - ForEach(rowGroup.btnGroup, (btn: ToolButton | Array, index: number) => { - if (Array.isArray(btn)) { - if ((btn as Array).length > 0) { - Button((btn as Array)[0].str) - .bindMenu(this.ToolsMenu((btn as Array))) - .height('50') - .width('50') - .padding('1') - .type(ButtonType.Normal) - } - } else { - this.TButton((btn as ToolButton).icon, (btn as ToolButton).str); - } - }) - }.margin({ top: 2, left: 2, bottom: 0, right: 2}) - Row() { - Text(rowGroup.str) - .fontSize(8) - .fontColor(Color.Gray) - Button('X') - .fontColor(Color.Gray) - .fontSize(8) - .height(12) - .width(8) - .padding(1) - .type(ButtonType.Normal) - .bindMenu(this.XMenu(groupMenu)) - .align(Alignment.BottomEnd) - .backgroundColor(Color.Transparent) - } - }.margin({ top: 1,left:1,bottom:1,right:1}) - } - }.margin({ top: 1,left:1,bottom:1,right:1}) - .borderWidth('1') - .borderRadius(5) - .borderColor(Color.Gray) - }) - //设置尾部的按钮 - Row(){ - Button('X') - .fontColor(Color.Gray) - .fontSize(8) - .width(8) - .height(70) - .padding(1) - .type(ButtonType.Normal) - .align(Alignment.BottomEnd) - .bindMenu(this.XMenu(rowMenu)) - .backgroundColor(Color.Transparent) - } - } - .width('100%') - .align(Alignment.BottomEnd) - .borderColor(Color.Gray) - }) - }.margin({ top: 1,left:1,bottom:5,right:1}) - } -} \ No newline at end of file diff --git a/entry/src/main/ets/pages/titleTab.ets b/entry/src/main/ets/pages/titleTab.ets deleted file mode 100644 index 939bd8ae..00000000 --- a/entry/src/main/ets/pages/titleTab.ets +++ /dev/null @@ -1,152 +0,0 @@ -import { hilog } from '@kit.PerformanceAnalysisKit'; -import { ArrayList } from '@kit.ArkTS'; -import { AddFormMenuItem } from '@ohos.arkui.advanced.FormMenu'; -import {ToolButton,RowBtnTab,RowBtn}from './rowBtnTab' -import { SceneResourceType } from '@kit.ArkGraphics3D'; - -const DOMAIN = 0x0000; - - -class TitleTabName { - //标题 - str: string=''; - //图标名 - icon: string=''; - //页面名 - page:string=''; - //提示 - tips:string=''; - //Content的内容 - rowsBtn:Array>=new Array>; -} - -//测试数据 -let testPagInfo:Array=[ - //第一个tab - {str:'文件',icon:'',page:'',tips:'',rowsBtn:[]}, - //第二个tab - {str:'主页',icon:'',page:'',tips:'',rowsBtn:[ - [//第一行按钮 - { str:'1行功能组-A',btnGroup:[ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - [ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - ], - ], - }, - { str:'1行功能组-B',btnGroup:[ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - [ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - ], - ]} - ], - [//第二行按钮 - { str:'二行功能组-A',btnGroup:[ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - [ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - ], - ], - }, - { str:'测试',btnGroup:[ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - [ - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - {str:'测试',icon:'',tips:'',event:''} as ToolButton, - ], - ]} - ] - ] - }, - {str:'曲线',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'曲面',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'装配',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'多边形建模',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'分析',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'选择',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'显示',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'工具',icon:'',page:'',tips:'',rowsBtn:[]}, - {str:'应用模块',icon:'',page:'',tips:'',rowsBtn:[]}, -] - -@Component -export struct TitleTab { - titleBarTabsName:Array=new Array; - //顶部导航组件 - private titleBarTabs: TabsController = new TabsController(); - //当前的顶部导航选择页 - @State titleBarFocusIndex: number = 0; - @State titleBarDefaultFocusIndex: number = 1; - LoadData(): void { - this.titleBarTabsName=testPagInfo; - } - aboutToAppear() { - this.LoadData(); - } - - build() { - Flex({ direction: FlexDirection.Column }){ - Scroll() { - Row() { - ForEach(this.titleBarTabsName, (item: TitleTabName, index: number) => { - Row({ space: 1 }) { - Button(item.str) - .fontWeight(index === this.titleBarFocusIndex ? FontWeight.Bold : FontWeight.Normal) - .height(25) - .width(60) - .padding(5) - .type(ButtonType.Normal) - }.onClick(() => { - if(index!=0){ - this.titleBarTabs.changeIndex(index); - this.titleBarFocusIndex = index; - }else{ - this.titleBarTabs.changeIndex(this.titleBarDefaultFocusIndex); - this.titleBarFocusIndex = this.titleBarDefaultFocusIndex; - } - }) - }) - } - } - .align(Alignment.Start) - .scrollable(ScrollDirection.Horizontal) - .scrollBar(BarState.Off) - .margin({ top: 2,left:2,bottom:2,right:2}) - .width('100%') - Tabs({barPosition: BarPosition.Start, index: this.titleBarDefaultFocusIndex,controller: this.titleBarTabs}){ - ForEach(this.titleBarTabsName,(item:TitleTabName, index: number)=>{ - TabContent() { - RowBtnTab({rowsBtn:item.rowsBtn}) - }.align(Alignment.Start) - .padding(1) - .margin({ top: 0,left:0,bottom:2,right:0}) - }) - }.scrollable(false) - .barHeight(0) - .margin({ top: 0,left:0,bottom:0,right:0}) - .height('auto') - .barMode(BarMode.Fixed) - }.borderWidth('1') - .height('auto') - } -} diff --git a/entry/src/main/resources/base/media/base_app_exit.bmp b/entry/src/main/resources/base/media/base_app_exit.bmp new file mode 100644 index 00000000..002c4365 Binary files /dev/null and b/entry/src/main/resources/base/media/base_app_exit.bmp differ diff --git a/entry/src/main/resources/base/media/base_close_file.bmp b/entry/src/main/resources/base/media/base_close_file.bmp new file mode 100644 index 00000000..929cb2e7 Binary files /dev/null and b/entry/src/main/resources/base/media/base_close_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_export_file.bmp b/entry/src/main/resources/base/media/base_export_file.bmp new file mode 100644 index 00000000..d88b5cf8 Binary files /dev/null and b/entry/src/main/resources/base/media/base_export_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_help_file.bmp b/entry/src/main/resources/base/media/base_help_file.bmp new file mode 100644 index 00000000..61d10908 Binary files /dev/null and b/entry/src/main/resources/base/media/base_help_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_import_export_file.bmp b/entry/src/main/resources/base/media/base_import_export_file.bmp new file mode 100644 index 00000000..eeb3fd22 Binary files /dev/null and b/entry/src/main/resources/base/media/base_import_export_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_import_file.bmp b/entry/src/main/resources/base/media/base_import_file.bmp new file mode 100644 index 00000000..2c857ace Binary files /dev/null and b/entry/src/main/resources/base/media/base_import_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_new_file.bmp b/entry/src/main/resources/base/media/base_new_file.bmp new file mode 100644 index 00000000..a542f9b3 Binary files /dev/null and b/entry/src/main/resources/base/media/base_new_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_open_file.bmp b/entry/src/main/resources/base/media/base_open_file.bmp new file mode 100644 index 00000000..18260268 Binary files /dev/null and b/entry/src/main/resources/base/media/base_open_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_save_file.bmp b/entry/src/main/resources/base/media/base_save_file.bmp new file mode 100644 index 00000000..511e798f Binary files /dev/null and b/entry/src/main/resources/base/media/base_save_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_saveall_file.bmp b/entry/src/main/resources/base/media/base_saveall_file.bmp new file mode 100644 index 00000000..574a2af7 Binary files /dev/null and b/entry/src/main/resources/base/media/base_saveall_file.bmp differ diff --git a/entry/src/main/resources/base/media/base_saveas_file.bmp b/entry/src/main/resources/base/media/base_saveas_file.bmp new file mode 100644 index 00000000..1265ef5d Binary files /dev/null and b/entry/src/main/resources/base/media/base_saveas_file.bmp differ